gpt4 book ai didi

c++ - 错误 : Invalid base class C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:39 25 4
gpt4 key购买 nike

谁能解释一下是什么导致了这个错误?

Error: Invalid base class

我有两个类,其中一个派生自第二个:

#if !defined(_CGROUND_H)
#define _CGROUND_H

#include "stdafx.h"
#include "CGameObject.h"


class CGround : public CGameObject // CGameObject is said to be "invalid base class"
{
private:
bool m_bBlocked;
bool m_bFluid;
bool m_bWalkable;

public:
bool draw();

CGround();
CGround(int id, std::string name, std::string description, std::string graphics[], bool bBlocked, bool bFluid, bool bWalkable);
~CGround(void);
};

#endif //_CGROUND_H

CGameObject 看起来像这样:

#if !defined(_CGAMEOBJECT_H)
#define _CGAMEOBJECT_H

#include "stdafx.h"

class CGameObject
{
protected:
int m_id;
std::string m_name;
std::string m_description;
std::string m_graphics[];

public:
virtual bool draw();

CGameObject() {}
CGameObject(int id, std::string name, std::string description, std::string graphics) {}

virtual ~CGameObject(void);
};

#endif //_CGAMEOBJECT_H

我尝试清理我的项目,但没有成功。

最佳答案

定义数组 ( std::string m_graphics[] ) 而不指定其大小作为类成员是无效的。 C++ 需要提前知道类实例的大小,这就是为什么你不能从它继承的原因,因为 C++ 在运行时不知道继承类的成员在内存中的哪个位置可用。
您可以在类定义中固定数组的大小,或者使用指针并将其分配到堆上,或者使用 vector<string>。而不是数组。

关于c++ - 错误 : Invalid base class C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com