我在使用 C++ 时遇到问题。
我想创建两个类,A 和 B。
类 A 有一些方法采用类 B 实例的参数。但在类 B 中,我也有一些方法采用类 A 实例的参数。
我尝试转发声明类 A,然后定义类 B。最后,我定义类 A。
一些代码:
class A;
class B
{
void Method1(A* instaceOfA)
{
instaceOfA->MethodX();
}
.......
};
class A
{
Method1(B* instaceOfB);
MethodX();
.......
};
我在 Visual Studio 2010 中编码,它显示错误,因为我在类 A 中调用 MethodX
但类 A 未完全定义。
如何解决这个问题?
最佳答案
将B::Method1
的定义放在class A
声明之后
//header file
class A;
class B
{
void Method1(A* instaceOfA);
.......
};
class A
{
Method1(B* instaceOfB);
MethodX();
.......
};
// cpp file
void B::Method1(A* instaceOfA);
{
instaceOfA->MethodX();
}
这就是.cpp 文件的用途。您可以在头文件中声明类和方法,然后将定义添加到 .cpp 文件中。
关于c++ - C++ 中前向声明的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430394/