c++ - 为什么在前向声明后出现未定义类型错误?

标签 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();
    }
};

最佳答案

您需要将调用前向声明类的成员函数的函数体移动到 header 之外的定义可用的地方:

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

否则,编译器知道B可用,但不知道BHelloFromB不带参数的成员函数.

关于c++ - 为什么在前向声明后出现未定义类型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15429876/

相关文章:

c++ - 任何 #include 之前的 "using namespace std;"?

c++ - C++ 中用于将 wchar_t* 或 char* 分配给数组的模板方法

.net - 使用单击一次部署时,是否有 'Publish Date' 属性可用

c# - 如何从 SqlDataReader 获取列的表名

c++ - 在 C++ 中克隆一个 wchar_t*

c++ - 在Visual Studio C++中写入函数引发读取访问冲突异常

C++ - 为什么忽略 if-else-statement 中的 else-statement?

c++ - 为什么memcpy()和其他类似函数使用汇编程序?

c# - 如何使用 DotNumerics 解决线性规划问题?

c++ - 可以在编译时对数组进行索引吗?