私が持っている例:私は唯一*「をptr'.Iは、そのポインタがタイプである知っている 『』が、私はそれがクラスのオブジェクトを指しているかどうかわからない」ポインタを持って基本クラスオブジェクトへのポインタを持っていると、どうすれば仮想メソッドのアドレスを取得できますか?
class A{
public:
virtual void run(){...}
};
class B:public A {
public: void run(){...}
};
A* ptr= new B();
'または' B 'またはクラスAから派生し、関数' run 'を実装する他のクラス' X '(私の例では、オブジェクトは' B '型です)それは私のオブジェクトのクラスで実装されていますか?
なぜあなたはそれを知る必要がありますか? – litelite
(実際に使用される) 'run'関数のアドレスは、通常はプログラマーには表示されない仮想テーブル内にしかありません。これを行うことで正確に何を達成しようとしているのですか?関数のアドレスが実際に必要ですか、または正しい派生関数へのランタイムディスパッチが行われているという確認を探していますか? – Xirema
関数ポインタまたはアドレスが必要ですか? – alain