純粋な仮想メソッドinsertData(InputData * input)を持つ「アルゴリズム」と呼ばれるインターフェースを定義しようとしています。
インターフェイスの実装は「Algorithm1」と呼ばれ、「InputData」クラスの子である「SpecificData」をパラメータとして使用するメソッド「insertData」を実装したいと考えています。
型キャストなしで可能ですか?
明らかに、このコードでは、コンパイラから、仮想関数「insertData」が「Algorithm1」内で純粋であるというエラーが表示されます。
class Algorithm{
public:
virtual ~Algorithm();
virtual void insertData(InputData* input) = 0;
};
class Algorithm1 : public Algorithm{
public:
Algorithm1();
virtual ~Algorithm1();
void insertData(SpecificData* input){
input.getID();
input.getAdditionalNumbers;
/*Process input information etc.*/ };
};
class InputData{
public:
void setID(int id){ this->id = id; }
int getID(){ return id;};
private:
int id;
};
class SpecifiData : public InputData{
public:
list<int> getAdditionalNumbers(){/*Return various Numbers*/};
private:
list<int> extraInfo;
};
void main(){
SpecificData* data = new SpecificData();
Algorithm* alg = new Algorithm1();
alg->insertData(data);
}