C++ 无法创建类实例

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

我有一个单例类,它实现了另外两个抽象类

My monkey::getMonkey失败,因为
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