• ベストアンサー

c++ 包含しているメンバーのリスト

包含しているメンバーのリストを取得するにはどうすれば良いでしょうか? 例えば、クラスAが long型の変数x、yと、 char型の変数zを持っているとき、 それらの「型」及び「変数名」を配列で返すような方法などがあるのかなと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • HDraco
  • ベストアンサー率100% (3/3)
回答No.3

C++と言ってもいろんな処理系がありますので必ずしも使えるとは限りませんが、 auto型、テンプレートを駆使すれば型はわかるかもしれません。 (C++11での機能ですので、サポートしている処理系かは確認してください。) でもメンバを知りたい目的は何なのでしょうか? 普通クラス定義をみればメンバの名前と型はわかりますが、 それが見えないクラスについて型を知りたいということなのでしょうか?

TeferiMage
質問者

お礼

ありがとうございます。 画面上に存在するクラスを総舐めして、 それらのクラスのうち、 TextBox系やListBox系など、 一部のユーザコントロールに対して一定の処理を施すということをしようとしていました。 (View層は他のミドルウェア)

その他の回答 (3)

  • HDraco
  • ベストアンサー率100% (3/3)
回答No.4

C#なら http://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html みたいなのが参考になりますね。 (個人的にWindows上では最近はC#、C++はLinux上で使ってますので^^;)

TeferiMage
質問者

お礼

実は、 C#なら、  foreach (Control c in top.Controls)でできて、 VB.NETなら、  For Each c As Control In top.Controlsでできるのですが、 C++だとどうやるのでしょうか?

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

それらの情報を実行中のプログラムから使うことを考えているなら、C++にはそのような機能はないと思ってください。 実行時型情報を扱う機能はC++には仮想関数などごく一部しかありません。 そのような機能が必要な場合は別の言語を使うことをお勧めします。

TeferiMage
質問者

お礼

C++にはないのですか。。 残念。 実行時に扱う機能、 そのわずかな仮想関数は少し調べてみようと思います。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「何から」取得するのか, によって大きく変わる. ソースコードから取得するなら, 本質的にはコンパイラを作ればいいだけ. そうでないなら一般には不可. 「デバッグ情報」があれば, そこから拾ってくることも考えられなくはないが当然「デバッグ情報」に強く依存する.

TeferiMage
質問者

お礼

コンパイラを作成は 難易度が高そうなので私にはできなさそうです。 デバッグ情報からは拾えるのですね (確かにデバッガで、各変数の方がわかりますものね。) しかしリリースする実行体には、デバッグ情報は除外するので、その意味でも難しいてす。 あきらめます。 ありがとうございました!

関連するQ&A

専門家に質問してみよう