我有以下课程:
(标题)
struct udtMapping
{
int ByteStart;
int ByteCount;
int iHPUnitID;
};
class clsMapping : public CBaseStructure
{
private:
vector<udtMapping> m_content;
protected:
public:
vector<udtMapping> &Content();
void Add(int i1, int i2, int int3);
};
cpp文件:
vector<udtMapping> &clsMapping::Content()
{
return m_content;
}
void clsMapping::Add(int i1, int i2,int i3)
{
udtMapping n;
n.ByteStart = i1;
n.ByteCount = i2;
n.iHPUnitID = i3;
m_content.push_back(n);
return;
}
现在我想通过说
clsMapping nMapping;
但是编译器告诉我“无法从抽象类创建实例”。
我不确定哪里出了问题。
感谢您的帮助。
编辑:应要求在这里是CBaseStructure
class CBaseStructure
{
protected:
virtual void ProcessTxtLine(string line) = 0;
virtual void AfterLoad();
virtual string CompactLine(string line);
public:
void Load(string file);
void Load2(string file);
void Load3(string file);
};
最佳答案
CBaseStructure必须是抽象类。如果要从中派生并且想要一个非抽象类,则必须重写CBaseStructure声明的每个纯虚函数。显然您没有那样做。
编辑
CBaseStructure具有一个纯虚函数ProcessTxtLine
。您的班级必须重写该函数。
您的代码中没有任何内容可以解释您为什么要从CBaseStructure继承,它对您有什么作用?