起源
如果你编写c++代码喜欢把实现和声明写在一块的话,可能会出现这个编译错误。意思就是你使用了不完整的类型(尽管你有前置声明)
例如下面这份代码
class A;
class Base {
public:
// invalid use of incomplete type 'class A'
A func(){
return A();
}
};
class A {
};
class A; 只是告诉编译器有A这个类,而后面使用了 A() ,由于编译器还没编译到类A的所有代码,因此不知道A究竟有没有 A() 这个构造函数。
解决方法:
在class A 定义后面在去实现func函数
class Base {
public:
// fix error
A func();
};
class A {
};
A Base::func()