C++ 无法创建类实例
我有一个单例类,它实现了另外两个抽象类 My monkey::getMonkey失败,因为C++ 无法创建类实例,c++,class,inheritance,abstract-class,C++,Class,Inheritance,Abstract Class,我有一个单例类,它实现了另外两个抽象类 My monkey::getMonkey失败,因为thisMonkey=new monkey()返回“不允许抽象类类型为“monkey”的对象”。我知道你不能实例化抽象类,但我的monkey实现了两个抽象类(这意味着它不是抽象的..对吗?) 解决这个问题的办法是什么 class monkey : public animal, public npc { public: ~monkey(); static monk
thisMonkey=new monkey()
返回“不允许抽象类类型为“monkey”的对象”。我知道你不能实例化抽象类,但我的monkey实现了两个抽象类(这意味着它不是抽象的..对吗?)
解决这个问题的办法是什么
class monkey : public animal,
public npc {
public:
~monkey();
static monkey* getMonkey();
private:
monkey();
static monkey* thisMonkey;
}
monkey::monkey() {};
monkey::~monkey() {};
/* .. implements the virtual methods of animal and npc ... */
monkey::getMonkey() {
if (!thisMonkey)
thisMonkey = new monkey();
return thisMonkey;
}
你没有表现出足够的能力来准确地说,但是你的类是先验的
monkey
不实现基类中的所有纯虚函数。具有未被重写的纯虚函数的类是抽象的。在类
和npc
中查找声明为纯虚的所有方法,并在monkey类中为它们提供实现。它们是monkey类的基类,看起来您还没有实现它们的抽象接口
纯虚拟类看起来像:
return_type methodName(params)=0;
您必须在派生类(monkey)中提供一个具有该原型的函数和一个实现。当您有一个指向其中一个派生类的指针并调用“pure virutal”函数时,将调用该函数。即
animal* aptr = new monkey;
aptr->methodName(params);
将映射到:
monkey::methodName