0

我在使用继承时编译代码时遇到问题。我已经尝试了大部分但没有运气编译

我首先有一个抽象或“接口”类

class ImyBase
{
    public:
        ImyBase();
        ImyBase(....);
        virtual ~ImyBase();

        virtual void someFuncs() = 0;
        ....
};

然后我有一个实现这个类的类。

class myBase : public ImyBase
{
    public:
        myBase();
        myBase(....);
        virtual ~myBase();

        void someFuncs();
        ....
};

然后我有一个包装类。

class myWrap
{
    public:
        myWrap();
        myWrap(....);
        virtual ~myWrap();

        void someFuncs();
        ....
};

此时在实施中一切正常。但是当我尝试测试包装类时,我得到了错误 LNK2019: unresolved external symbol "public: __thiscall ImyBase::ImyBase(void)" (??0ImyBase@@QAE@XZ) 在函数“public: __thiscall”中引用myBase::myBase(void)" (??0myBase@@QAE@XZ)

int main(int argc, char* argv)
{
    myWrap wr;
}

任何帮助表示赞赏!我知道它一定是某个地方的愚蠢错误......

4

1 回答 1

2

您没有基本构造函数的实现。这些选项在实现文件中定义构造函数,或者,如果它们为空,则在类定义本身中定义:

class ImyBase
{
    public:
        ImyBase() {};
        ImyBase(....) {};
        virtual ~ImyBase() {};
};

或将它们标记default为 C++11:

class ImyBase
{
    public:
        ImyBase() = default;
        ImyBase(....) = default;
        virtual ~ImyBase() = default;
};
于 2012-12-02T18:51:02.030 回答