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

Moh*_*kar 2 .net c++ c++-cli visual-c++

我在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();
    }
};
Run Code Online (Sandbox Code Playgroud)

das*_*ght 7

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

void A::HelloFromA(){
    b->HelloFromB();
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Mahdi Visual Assist X提供[移动实现到源文件](http://www.wholetomato.com/products/features/moveImplementation.asp)重构功能. (2认同)