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 に答える