【问题标题】:why my derived class is an abstract class? C++ [closed]为什么我的派生类是抽象类? C++ [关闭]
【发布时间】:2014-10-27 09:53:11
【问题描述】:
//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;
    }
};

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

【问题讨论】:

  • 你能告诉我们编译错误吗?它通常说明出了什么问题。
  • 你打错了:diplaydisplay 不一样。
  • 使用 override 关键字可能有助于找出错字。

标签: c++ xcode virtual derived


【解决方案1】:

问题在于这些功能

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

【讨论】:

  • 完美:),这应该是问题所在。
【解决方案2】:

如果这确实是你的代码,你有一个错字

 virtual void diplay(void) = 0;

 void display(void)

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 2012-05-21
    • 2011-02-01
    • 2012-04-22
    • 2014-10-13
    • 2013-11-30
    • 1970-01-01
    • 2020-06-07
    • 2020-09-01
    相关资源
    最近更新 更多