0


0

基本クラスメソッドからサブクラス化された仮想メソッドを呼び出す
class A
{
public:
    virtual void
        doSomething(void)
    {}

    void
        doStuff(void)
    {
        doSomething();
    }
};

class B : public A
{
public:
    void
        doSomething(void)
    {
        // do some stuff here
    }
};

B * b = new B;
b->doStuff();

セグメンテーションエラーが発生します。 何がおかしいのですか? 私の意見ではうまくいくはずです!

3 Answer


5


構文エラーを修正してmain()関数を追加した後、問題なくコンパイルおよび実行されました。 問題の原因となるREALコードを投稿して、コードのフォーマットを再考してください。


1


私が見る限り、クラス定義の下のコードでポリモーフィズムを行っているわけではありません。

b→ doStuff()`は `B`クラスのメソッドを呼び出す必要があります。 Bの内部で `A→ doSomething`を呼び出すには、 A

doSomething`を使用します


0


「クラスA」と「パブリックA」の後に「:」を付けないでください…​