//abstract product
class AbstractProduct
{
public:
virtual void diplay(void) = 0;
};
//concrete product
class Histogram : public AbstractProduct
{
public:
Histogram()
{
cout << "default construct a Histogram!" << endl;
}
void display(void)
{
cout << "Display Histogram!" << endl;
}
};
//factury class
class Factury
{
public:
static AbstractProduct* getProduct(string type)
{
AbstractProduct* absP;
if(type=="Histogram")
{
Histogram his;// error, Variable type "Histogram" is an abstract class
}
return absP;
}
};
我已经实现了纯虚函数,但它仍然说我的派生类是一个抽象类。我不知道为什么。
答案 0 :(得分:4)
问题在于这些功能
virtual void diplay(void) = 0;
和
void display(void)
{
cout << "Display Histogram!" << endl;
}
有不同的名字。我认为只是一个错字。
考虑到这个静态功能
static AbstractProduct* getProduct(string type)
{
AbstractProduct* absP;
if(type=="Histogram")
{
Histogram his;// error, Variable type "Histogram" is an abstract class
}
return absP;
}
也没有意义,因为它返回未初始化的指针absP
答案 1 :(得分:0)
如果您的代码确实存在错误
virtual void diplay(void) = 0;
和
void display(void)