类型a必须实现继承的纯虚方法b

Jua*_*uan 6 c++

我希望使用抽象类在C++中模拟接口sterotype.但是在Eclipse IDE中,我得到"此行的多个标记 - 类型'Handler'必须实现继承的纯虚方法'Handler :: setNext'"

我的问题是为什么这个?

handler.h中

class Handler {
 public:

    virtual void setNext(Handler &next)  = 0;
    Handler();
    virtual ~Handler();
    virtual void process()  = 0;
 public:

    Handler *nextInChain;

};
Run Code Online (Sandbox Code Playgroud)

Handler.cpp

#include "Handler.h"
Handler::Handler(){
}
Handler::~Handler(){
}
Run Code Online (Sandbox Code Playgroud)

Oracle.h

#include "Handler.h"
class Oracle : virtual public Handler {
 public:
    Oracle();
    virtual ~Oracle();
    virtual void process();
    virtual void setNext(Handler &next);
 private:

};
Run Code Online (Sandbox Code Playgroud)

Oracle.cpp

#include "Oracle.h"

Oracle::Oracle(){
Handler AQUI;//AQUI I get Multiple markers at this line
             //- The type 'Handler' must implement the inherited pure virtual method 
 //'Handler::setNext'
}

Oracle::~Oracle(){
}

void Oracle::process(){
}

void Oracle::setNext(Handler &next){
}
Run Code Online (Sandbox Code Playgroud)

imr*_*eal 22

这是不正确的:

Handler AQUI;
Run Code Online (Sandbox Code Playgroud)

您无法实例化抽象类.

你想要做的是定义一个指针,Handler并从子类中为它指定一个有效对象的地址,比如Oracle.