ZBLOG

Base class has incomplete type

这个错误通常是由于在派生类的定义中,使用了基类的成员或方法,但是编译器还没有看到基类的完整定义。

解决方法是,在派生类的头文件中包含基类的头文件,并且将基类声明为完整类型。如果基类和派生类在同一个头文件中定义,可以先定义基类再定义派生类,这样就可以避免这个问题。

例如:

  1. // base.h
  2. #ifndef BASE_H
  3. #define BASE_H
  4. class Base {
  5. public:
  6. virtual ~Base() {}
  7. virtual void foo() = 0;
  8. };
  9. #endif // BASE_H
  10. // derived.h
  11. #ifndef DERIVED_H
  12. #define DERIVED_H
  13. #include "base.h" // 包含Base的头文件
  14. class Derived : public Base {
  15. public:
  16. void foo(); // 实现Base的虚函数
  17. };
  18. #endif // DERIVED_H
  19. // derived.cpp
  20. #include "derived.h"
  21. void Derived::foo()
  22. {
  23. // do something...
  24. }

在Derived中使用了Base作为父类,并实现了它的纯虚函数foo()。因此,在Derived的头文件中需要包含Base的头文件并声明Base为完整类型。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4040

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?