从函数内部更改参数

时间:2014-01-14 10:47:50

标签: c++ argument-passing

考虑功能A,B和C.

void A(){
  int arg;
  B(arg);
}

void B(int& arg){
  C(arg)
}    

void C(int& arg){
  arg = 10;
}

我希望我的参数值由函数C设置。这段代码给出了一个错误。函数调用的顺序必须是A调用B,调用C.如何执行此操作?

3 个答案:

答案 0 :(得分:4)

这应该可行,但您必须以这种方式编写(重新排序函数定义):

void C(int& arg){
  arg = 10;
}

void B(int& arg){
  C(arg);
}    

void A(){
  int arg;
  B(arg);
}

或者转发声明之前的函数:

void B(int&);
void C(int&);

void A(){
  int arg;
  B(arg);
}

void B(int& arg){
  C(arg);
}    

void C(int& arg){
  arg = 10;
}

这样,A()知道B()知道C()

答案 1 :(得分:0)

对源中的函数重新排序:C B A而非A B C。

答案 2 :(得分:0)

A()功能之前添加原型。在您的代码中,在编译A()期间,编译器不知道B();所以通过函数原型,你告诉编译器它。同样适用于C()

void B(int&); 
void C(int&);

void A(){
    int arg;
    B(arg);
}

void B(int& arg){
    C(arg);
}    

void C(int& arg){
    arg = 10;
}

int main() {
    int a=20;
    A();
    return 0;
}