我正在尝试定义一个名为“算法”的接口,它有一个纯虚拟方法 insertData(InputData* 输入)。
该接口的实现称为“Algorithm1”,我想使用作为“InputData”类的子级“SpecificData”的参数“insertData”来实现方法“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);
}