この質問は似ていますが、クラスの中から機能を呼び出すことについてです。その場合はCan I call a base class's virtual function if I'm overriding it?C++のクラスの外部で基本関数を呼び出す方法はありますか?
、あなたはオーバーライドされた定義を呼ぶであろう、Base::function()
代わりのfunction()
を指定すると思います。
しかし、クラス外でこれを行う方法はありますか?私のクラスはコピーコンストラクタを定義していないので、私は、基本クラスとしてキャストする方法を見つけ出すことができませんでした:
Base(derived_object).function()
がBase*
として& derived_object
をキャストして->function()
を呼び出すために、ここで行うには適切なものですか?
あなたの洞察に感謝します。
derived_ptr->Base::function();
作品だけで罰金:
仮想関数のポイントは、オブジェクトのコンパイル時の型とは関係なく、実行時に解決されるということです。 'dynamic_cast'は確実に動作しません。 –
なぜあなたはしたいですか?関数が派生クラスの一部であり、ベースクラスでもある場合は、ベースクラスを呼び出すときにおそらく何か間違っているでしょう。これを解決するより良い方法は、派生クラスによって呼び出されることを目的としたベースクラス内の別の関数を作成し、そのベースクラスがその関数を呼び出すようにすることです。 –
下記の@Omnifariousへのコメントをご覧ください。 – user