I want to implement simle factory pattern but when I try compile code i get error like:
error: undefined reference to `vtable for Interface'
error: undefined reference to `typeinfo for Interface'
class Interface{
public:
virtual void set(const std::string &data);
virtual void get(const std::string &data);
virtual void show();
virtual ~Interface(){}
};
class InterX : public Interface{
public:
void set(const std::string &data){x++;}
void get(const std::string &data){x--;}
void show(){std::cout << x << std::endl;}
private:
int x = 1;
};
class InterY : public Interface{
public:
void set(const std::string &data){y++;}
void get(const std::string &data){y--;}
void show(){std::cout << y << std::endl;}
private:
int y = 2;
};
class Factory{
public:
static Interface* getInterface(const std::string interface_name){
if(interface_name == "x") return new InterX();
if(interface_name == "y") return new InterY();
return nullptr;
}
};
int main()
{
Interface* interface = Factory::getInterface("x");
return 0;
}
How could I fix that? When I commented line in main, the programs comiles
Interface* interface = Factory::getInterface("x");
Aucun commentaire:
Enregistrer un commentaire