ZBLOG

Base class has incomplete type

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

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

例如:

// base.h
#ifndef BASE_H
#define BASE_H

class Base {
public:
    virtual ~Base() {}
    virtual void foo() = 0;
};

#endif // BASE_H

// derived.h
#ifndef DERIVED_H
#define DERIVED_H

#include "base.h" // 包含Base的头文件

class Derived : public Base {
public:
    void foo(); // 实现Base的虚函数
};

#endif // DERIVED_H

// derived.cpp
#include "derived.h"

void Derived::foo()
{
    // do something...
}

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?