プログラムで非常に紛らわしいエラーが発生します。同じオブジェクトがあると思っていたところに、同じクラスの 2 つの異なるオブジェクトがあると思います。必要なオブジェクトへのポインターを取得するのが簡単ではない非常に大きなフレームワークを扱っているため、混乱します。
私の質問は、Base から継承する Derived クラスがあり、Derived オブジェクトへのポインターがある場合、派生オブジェクトから Base オブジェクトのアドレスを取得するにはどうすればよいですか? 私はベース クラスのソース コードを扱っており、ベース内の「this」のアドレスを出力しています。私のコードの別の部分では、Derived へのポインターを取得します。必要な特定の派生オブジェクトへのポインターがあるかどうかを判断するために、派生オブジェクトを介して Base オブジェクトのアドレスを出力できる必要があります。
C++ の継承でアドレスがどのように機能するかについて、大きな誤解があるかもしれません。派生オブジェクトにリンクされた基本オブジェクトではなく、1 つのオブジェクトにすぎないのではないでしょうか?
どうもありがとうございました
編集:これを行う理由は、純粋にデバッグのためです。問題は、使用しているコード ベースに多くのインターフェイスや保護されたメンバーが含まれていないため、特定の情報にアクセスするためにソース コードを編集する必要があることです。ただし、特定の派生ポインターを使用して Base クラスに追加したメソッドを呼び出すと、プログラムがクラッシュします。この場合、ベース オブジェクトのアドレスを出力して、これが正しいオブジェクトなのか、実際に間違ったオブジェクトへのポインタを持っているためにこのエラーが発生したのかを判断できるようにする必要があります。派生クラスにコードを追加してアドレスを出力できることはわかっていますが、ソース コードを編集しなくてもアドレスを取得できるかどうか疑問に思っていました。ありがとう