我有以下课程:

(标题)

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继承,它对您有什么作用?

08-05 15:12