为什么我的派生类是一个抽象类? C ++

时间:2014-10-27 09:53:11

标签: c++ xcode virtual derived

//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;
    }
};

我已经实现了纯虚函数,但它仍然说我的派生类是一个抽象类。我不知道为什么。

2 个答案:

答案 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)