为什么我在前向声明后得到未定义的类型错误?

时间:2013-03-15 10:25:02

标签: c++ .net visual-c++ c++-cli

我在C ++ CLI中使用此代码。但是这不应该与C ++有任何区别 我正在寻找解决方案来摆脱这个错误。

代码:

ref class B;
ref class A;

public ref class A
{
public:
    A() {}
    B^ b;
    void HelloFromA(){
        b->HelloFromB();
    }
};

public ref class B
{
public :
    A^ a;
    B() {}
    void HelloFromB(){
        a->HelloFromA();
    }
};

1 个答案:

答案 0 :(得分:7)

您需要将在头部之外的前向声明的类上调用成员函数的函数的主体移动到可用定义的位置:

void A::HelloFromA(){
    b->HelloFromB();
}

否则,编译器知道B可用,但它不知道B具有不带参数的HelloFromB成员函数。