我在一个工程里建了3个类 A,B,C
在类A中创建了B的一个对象x,声明为public
现在我要在C中使用这个对象x的方法f,我写了x->f();系统报错,'x':undeclared identifier请问我应该怎么引用这个对象的方法?

解决方案 »

  1.   

    你要注意指针
    你上面写到x-> f();这时指针还是C的所以会说X没有被定义
      

  2.   

    在定义这个x之前声明类A,也就是在声明A之前声明B。
      

  3.   

    笔误,是:在定义这个x之前声明类B,也就是在声明A之前声明B。
    也就是说,当你的类中定义有其他类对象的变量时,应该确保这个变量所对应的类已经被声明。
    解决办法是:
    在你C类的头文件中,照如下写就可以了:
    #include "A.h"
    #include "B.h"
    class A //前置声明
    class B //前置声明class C
    {
    public:
       B m_b;
       //......
    }同样,在你的B类中,也要按以上格式写
    #include "A.h"
    class A //前置声明class B
    {
    public:
      A x;
    }