首先,我知道有很多问题但是我没有找到解决方案,所以我决定写一下。
我正在开发一个C ++项目,我需要使用多态。为了解决我的问题,我将其简化为两个类:Parent和Child。 Parent只有虚方法,而Child必须实现它们。唯一要实例化的类是Child。所以,这是代码:
Parent.hh
namespace ParentNamespace {
class Parent {
public:
Parent();
~Parent();
virtual int Start() = 0;
};
}
Parent.cc
#include "Parent.hh"
using namespace ParentNamespace;
namespace ParentNamespace {
Parent::Parent(){}
Parent::~Parent(){}
}
Child.hh
#include "Parent.hh"
namespace ChildNamespace {
class Child : public ParentNamespace::Parent {
public:
Child();
~Child();
int Start();
};
}
Child.cc
#include "Child.hh"
namespace ChildNamespace {
Child::Child(){}
Child::~Child(){}
int Start(){
return 0;
}
}
它编译时没有错误(它生成.o文件),但是当它必须链接它们时,它会显示以下错误:
函数
的vtable的未定义引用ChildNamespace::Child::Child(): Child.cc:8:
对ChildNamespace::Child
我尝试过其他问题的回复,但没有成功。我想我看不到简单的东西,所以请帮忙!
提前致谢。
答案 0 :(得分:1)
你需要实现纯虚函数,添加Child :: 开始方法 在Child.cc
#include "Child.hh"
namespace ChildNamespace {
Child::Child(){}
Child::~Child(){}
int Child::Start(){
return 0;
}
}
我希望这可以帮到你