当我使用继承时,我遇到了编译代码的问题。我已经尝试了大部分内容,但没有运气编译
我首先有一个抽象或'界面'类
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:未解析的外部符号“public:__thiscall ImyBase :: ImyBase(void)”(?? 0ImyBase @@ QAE @ XZ)在函数“public:__thiscall”中引用myBase :: myBase(void)“(?? 0myBase @@ QAE @ XZ)
int main(int argc, char* argv)
{
myWrap wr;
}
任何帮助表示赞赏!我知道它必须在某个地方犯一个笨蛋...
答案 0 :(得分:2)
您没有基础构造函数的实现。选项是在实现文件中定义构造函数,或者如果它们是空的,则在类定义本身中定义:
class ImyBase
{
public:
ImyBase() {};
ImyBase(....) {};
virtual ~ImyBase() {};
};
或将它们标记为default
C ++ 11:
class ImyBase
{
public:
ImyBase() = default;
ImyBase(....) = default;
virtual ~ImyBase() = default;
};