C++ 不接受远期申报

C++ 不接受远期申报,c++,friend-function,C++,Friend Function,它在Qt Creator和Mingwin中抛出以下错误 为什么它会为类B的前向声明抛出错误? 可能是我犯了一个愚蠢的错误,但我找不到它。当编译器解析语句时 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

它在Qt Creator和Mingwin中抛出以下错误

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

当编译器解析语句时

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;}
它不知道类B是否有成员函数测试。在这一点上,编译器需要类B的定义来确定该语句是否正确

将B类的定义置于A类的定义之前

friend int B::test();