C ++でオブジェクトのタイプを見つける

lemnisca

クラスAとそれを継承する別のクラスBがあります。タイプAのオブジェクトをパラメーターとして受け入れる関数をオーバーライドしているので、Aを受け入れる必要があります。ただし、後でBだけが持つ関数を呼び出します。したがって、渡されたオブジェクトがタイプBでない場合は、falseを返し、続行しないようにします。

関数に渡されたオブジェクトがどのタイプであるかを知るための最良の方法は何ですか?

yesraaj

dynamic_castはトリックを行う必要があります

TYPE& dynamic_cast<TYPE&> (object);
TYPE* dynamic_cast<TYPE*> (object);

dynamic_castキーワードは、キャストの妥当性を確保するために、ランタイムチェックを行う、別のポインタまたは参照型からデータムをキャストします。

実際のオブジェクトの型ではない型へのポインタにキャストしようとすると、キャストの結果はNULLになります。実際のオブジェクトのタイプではないタイプを参照するようにキャストしようとすると、キャストはbad_cast例外をスローします。

dynamic_castを機能させるには、Baseクラスに少なくとも1つの仮想関数があることを確認してください。

ウィキペディアのトピック実行時型情報

RTTIは、多態性のクラスでのみ使用できます。つまり、少なくとも1つの仮想メソッドがあります。実際には、これは制限ではありません。基本クラスには、派生クラスのオブジェクトが基本ポインターから削除された場合に適切なクリーンアップを実行できるようにするための仮想デストラクタが必要です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++でオブジェクトのタイプを見つける

分類Dev

オブジェクトのタイプを見つけるc#

分類Dev

C#のクラスで特定のタイプのオブジェクトを見つけるにはどうすればよいですか?

分類Dev

Oracle 12cでシノニムが作成されるオブジェクトの基本タイプを見つける方法はありますか?

分類Dev

C#の列を持つリストでオブジェクトを見つける方法

分類Dev

C#で2つのオブジェクト間の差異を見つける

分類Dev

C ++ファイルのオブジェクトコードを見つける方法

分類Dev

C ++でオブジェクト指向プログラミングを使用してボックスのボリュームを見つける

分類Dev

Ubuntu 16.04でRiderを使用しているC#プロジェクトで、「プロジェクトが見つかりません」および「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

分類Dev

CMakeにCライブラリプロジェクトで自分のテストを見つけさせるにはどうすればよいですか?

分類Dev

C#Linqによってリストボックスデータソース(List <T>でバインドされている)でオブジェクトのインデックスを見つける方法

分類Dev

C#でジェネリッククラスタイプの2つのオブジェクトを比較する

分類Dev

SWIG:ヘッダーと共有ライブラリのみを使用してPerl用のC ++をラップすると、ロード可能なオブジェクトエラーを見つけることができません

分類Dev

C#同じオブジェクトタイプの2つのリストを比較する

分類Dev

JSONで正しいオブジェクトを見つけ、このオブジェクトの値を編集しますC#Json.Linq

分類Dev

多対多の関係とC ++での実装で2つの無関係なオブジェクトを見つける最も速い方法

分類Dev

C#動的COMオブジェクトがメソッドを見つけることができません

分類Dev

Obj-Cのランタイムで構造体をオブジェクトに関連付ける方法

分類Dev

値がC#のオブジェクトのリストである場合、辞書のキーを見つける方法は?

分類Dev

最新のC ++で異なるクラスタイプのオブジェクトを1つのコンテナに格納する方法は?

分類Dev

C ++でポインタが指すオブジェクトのタイプを知る方法は?

分類Dev

一般的な設計ガイダンスc#; メソッド間で不必要にオブジェクトを渡すimを見つける

分類Dev

C#2番目のリストで見つかった値を持つオブジェクトのみを含む2つのIEnumerableインスタンスからオブジェクトのリストを作成します

分類Dev

C#オブジェクトの配列をオブジェクトタイプで並べ替える(比較できない?)

分類Dev

C ++アプリでObjective-Cオブジェクトへのポインターを処理する方法

分類Dev

オブジェクトAの5つ、オブジェクトBの3つ、オブジェクトCの1つ、オブジェクトDの1つを、すべて1つのメソッド内でインスタンス化するより簡潔な方法はありますか?

分類Dev

C ++でオブジェクトを異なるタイプのオブジェクトに割り当てようとしています

分類Dev

未知の動的タイプのオブジェクトをC ++で複製する方法は?

分類Dev

C#-Service FabricRPCサービスで任意のタイプのオブジェクトを取得する

Related 関連記事

  1. 1

    C ++でオブジェクトのタイプを見つける

  2. 2

    オブジェクトのタイプを見つけるc#

  3. 3

    C#のクラスで特定のタイプのオブジェクトを見つけるにはどうすればよいですか?

  4. 4

    Oracle 12cでシノニムが作成されるオブジェクトの基本タイプを見つける方法はありますか?

  5. 5

    C#の列を持つリストでオブジェクトを見つける方法

  6. 6

    C#で2つのオブジェクト間の差異を見つける

  7. 7

    C ++ファイルのオブジェクトコードを見つける方法

  8. 8

    C ++でオブジェクト指向プログラミングを使用してボックスのボリュームを見つける

  9. 9

    Ubuntu 16.04でRiderを使用しているC#プロジェクトで、「プロジェクトが見つかりません」および「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

  10. 10

    CMakeにCライブラリプロジェクトで自分のテストを見つけさせるにはどうすればよいですか?

  11. 11

    C#Linqによってリストボックスデータソース(List <T>でバインドされている)でオブジェクトのインデックスを見つける方法

  12. 12

    C#でジェネリッククラスタイプの2つのオブジェクトを比較する

  13. 13

    SWIG:ヘッダーと共有ライブラリのみを使用してPerl用のC ++をラップすると、ロード可能なオブジェクトエラーを見つけることができません

  14. 14

    C#同じオブジェクトタイプの2つのリストを比較する

  15. 15

    JSONで正しいオブジェクトを見つけ、このオブジェクトの値を編集しますC#Json.Linq

  16. 16

    多対多の関係とC ++での実装で2つの無関係なオブジェクトを見つける最も速い方法

  17. 17

    C#動的COMオブジェクトがメソッドを見つけることができません

  18. 18

    Obj-Cのランタイムで構造体をオブジェクトに関連付ける方法

  19. 19

    値がC#のオブジェクトのリストである場合、辞書のキーを見つける方法は?

  20. 20

    最新のC ++で異なるクラスタイプのオブジェクトを1つのコンテナに格納する方法は?

  21. 21

    C ++でポインタが指すオブジェクトのタイプを知る方法は?

  22. 22

    一般的な設計ガイダンスc#; メソッド間で不必要にオブジェクトを渡すimを見つける

  23. 23

    C#2番目のリストで見つかった値を持つオブジェクトのみを含む2つのIEnumerableインスタンスからオブジェクトのリストを作成します

  24. 24

    C#オブジェクトの配列をオブジェクトタイプで並べ替える(比較できない?)

  25. 25

    C ++アプリでObjective-Cオブジェクトへのポインターを処理する方法

  26. 26

    オブジェクトAの5つ、オブジェクトBの3つ、オブジェクトCの1つ、オブジェクトDの1つを、すべて1つのメソッド内でインスタンス化するより簡潔な方法はありますか?

  27. 27

    C ++でオブジェクトを異なるタイプのオブジェクトに割り当てようとしています

  28. 28

    未知の動的タイプのオブジェクトをC ++で複製する方法は?

  29. 29

    C#-Service FabricRPCサービスで任意のタイプのオブジェクトを取得する

ホットタグ

アーカイブ