2013-02-12 136 views
5

我想在C++中使用抽象類模擬接口sterotype。但在Eclipse IDE中我碰到一個「在這一行 多個標記 - 類型‘處理程序’必須實現繼承純虛方法 ‘處理器:: setNext’」類型a必須實現繼承的純虛方法b

我的問題是,爲什麼這個?

handler.h中

class Handler { 
public: 

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

    Handler *nextInChain; 

}; 

Handler.cpp

#include "Handler.h" 
Handler::Handler(){ 
} 
Handler::~Handler(){ 
} 

Oracle.h

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

}; 

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){ 
} 
+1

您確定在這裏需要*虛擬繼承嗎?虛擬函數也適用於非虛擬繼承。 – leemes 2013-02-12 20:11:07

回答

19

這是不正確的:

Handler AQUI; 

你不能實例化一個抽象類。

你想要做的是定義一個指向Handler的指針,併爲其指定一個子類的有效對象的地址,如Oracle

+8

地獄誰低估了這個!? – StoryTeller 2013-02-12 20:06:13

相關問題