如何正确扩展类

时间:2013-05-22 05:27:16

标签: c++ oop extending

我尝试扩展类,但是使用第一类构造,我做错了什么?

class Test
{
public:
    Test(const char *str)
    {
        cout<<str<<endl;
    }
    virtual const char *getName() =0;
};

class Babah : public Test
{
    const char *getName()
    {
        return "Babah extends Test";
    }
};

1 个答案:

答案 0 :(得分:2)

代码中的问题是您的Test类没有'default'(非参数化)构造函数。所以你需要在子类中明确地调用它。

请尝试以下代码:

class Test
{
public:
    Test(const char *str)
    {
        cout<<str<<endl;
    }
    virtual const char *getName() =0;
};

class Babah : public Test
{
public:
    Babah(): Test("foo")    // Call the superclass constructor in the
                            // subclass' initialization list.
    {
          // do something with Babah or keep empty
    }
    const char *getName()
    {
        return "Babah extends Test";
    }
};