1

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

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";
    }
};
4

1 回答 1

2

您的代码中的问题是您的Test类没有“默认”(非参数化)构造函数。所以你需要在子类中显式调用它。

试试下面的代码:

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";
    }
};
于 2013-05-22T05:34:36.650 回答