读书人

关于成员对象指针传递有关问题

发布时间: 2012-04-15 18:39:21 作者: rapoo

关于成员对象指针传递问题
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的定义,否则只能使用指针或者引用

读书人网 >C++

热点推荐