这是我收到的以下错误
错误:转发'A类'|
的声明我正在尝试对类进行原型设计并使它们全局可用。 我认为最好通过图像来解释这一点,所以这里是:
哎呀也忘了提到FileA.cpp也#includes External.h
答案 0 :(得分:2)
对于实例化对象(自动或使用new
),需要有一个完整的可见类型定义。 Main.cpp可以看到class A
正文。
刚刚声明的不完整类型,使用有限。它可以用作:
e.g。
class A;
class X {
A* p;
A& r;
std::vector<A> v;
};
答案 1 :(得分:1)
main正在尝试构建A,因为它对该类一无所知,除了它存在之外。您需要Main.cpp可用的定义,而不是隐藏在另一个cpp文件中。
答案 2 :(得分:0)
如果没有完整的类定义,则无法实例化对象(new
)。
将定义移动到External.h
或使用工厂方法返回有效指针。
答案 3 :(得分:0)
当您使用课程A
时,您需要完整定义它。编译器还能知道它有哪些方法和变量?这包括构造对象的实例,即使只是创建指针。
答案 4 :(得分:0)
类的前向声明足以声明指向该类的指针或引用,但没有别的。如果你想使用类的函数(包括构造函数),你需要在使用时获得完整的定义。