假设我想要一个这样的东西,在一个.cpp源文件中:
class A {
public:
void doSomething(B *b) {};
};
class B {
public:
void doSomething(A *a) {};
};
Run Code Online (Sandbox Code Playgroud)
无论如何这样做没有将它分成两个单独的文件,并且没有收到编译器错误(语法错误doSomething(B *b))
Fre*_*els 12
如果我记得很清楚,你可以'预先宣布'你的班级B.
class B; // predeclaration of class B
class A
{
public:
void doSomething(B* b);
}
class B
{
public
void doSomething(A* a) {}
}
public void A::doSomething(B* b) {}
Run Code Online (Sandbox Code Playgroud)
然后,你的班级'A'知道班级'B'会存在,虽然还没有真正定义.
正如Evan Teran在评论中提到的那样,前向声明确实是正确的术语.