考虑功能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.如何执行此操作?
答案 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;
}