1
class B;
class A
{
    int divident,divisor;
    friend int B::test();
public:
     A(int i,int j):divident(i),divisor(j){}
};

class B
{
public:
    int test();
};

int B::test(){}
int main(){return 1;}

它在带有 Mingwin 的 Qt Creator 中引发以下错误。

在此处输入图像描述

为什么它会为 B 类的前向声明抛出错误?可能是我犯了一个愚蠢的错误,但我无法找到它。

4

1 回答 1

1

编译器解析语句时

friend int B::test();

它不知道B类是否有成员函数测试。此时编译器需要定义类 B 来判断该语句是否正确。

将 B 类的定义放在 A 类的定义之前。

于 2015-01-06T11:46:24.490 回答