与朋友功能的前向声明:无效使用不完整类型

Ari*_*rif 5 c++ forward-declaration friend-function

#include <iostream>

class B;

class A{
 int a;
public:
 friend void B::frndA();
};

class B{
 int b;
public:
 void frndA();
};

void B::frndA(){
 A obj;
 std::cout << "A.a = " << obj.a << std::endl;
}

int main() {
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

尝试编译此代码时,发生了一些错误.例如

无效使用不完整类型

这段代码有什么问题?

Ant*_*ony 3

将整个class B ...声明放在 之前class A。你还没声明B::frndA();

#include <iostream>
using namespace std;

class B{
    int b;
public:
    void frndA();
};

class A{
    int a;
public:
    friend void B::frndA();
};



void B::frndA(){
    A obj;
    //cout<<"A.a = "<<obj.a<<endl;
}

int main() {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)