关于成员对象指针传递问题
c1(在my函数中)调用其成员对象c2(的成员函数change_c1)改变自身成员变量a,但是报错,请教原因分析和解决办法。
- C/C++ code
////////////////////////////////////////////////////////class c2;class c1{public: void my(); c2 c2_inst; int a;};void c1::my(){ a=1; c2_inst.change_c1(this);}class c2{public: void change_c1(c1 * p_c1);};void c2::change_c1( c1 * p_c1 ){ p_c1->a=0;}void main(){ c1 work; work.my();}//////////////////////////////////////////////////////////报两个错误:
error C2079: 'c1::c2_inst' uses undefined class 'c2'
left of '.change_c1' must have class/struct/union
[解决办法]
交换一下 c1, c2 定义的顺序
- C/C++ code
class c1;class c2{public: void change_c1(c1 * p_c1);};class c1{public: void my(); c2 c2_inst; int a;};void c1::my(){ a=1; c2_inst.change_c1(this);}void c2::change_c1( c1 * p_c1 ){ p_c1->a=0;}void main(){ c1 work; work.my();}
[解决办法]
在使用c2之前必须要有c2的定义,否则只能使用指针或者引用