我希望使用抽象类在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.