1つだけ過去を変えられるとしたら?

包含しているメンバーのリストを取得するにはどうすれば良いでしょうか?

例えば、クラスAが
long型の変数x、yと、
char型の変数zを持っているとき、
それらの「型」及び「変数名」を配列で返すような方法などがあるのかなと思っています。

A 回答 (4件)

C++と言ってもいろんな処理系がありますので必ずしも使えるとは限りませんが、


auto型、テンプレートを駆使すれば型はわかるかもしれません。
(C++11での機能ですので、サポートしている処理系かは確認してください。)

でもメンバを知りたい目的は何なのでしょうか?
普通クラス定義をみればメンバの名前と型はわかりますが、
それが見えないクラスについて型を知りたいということなのでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2013/12/27 00:30

C#なら


http://www.atmarkit.co.jp/fdotnet/dotnettips/224 …
みたいなのが参考になりますね。

(個人的にWindows上では最近はC#、C++はLinux上で使ってますので^^;)
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/08 08:43

それらの情報を実行中のプログラムから使うことを考えているなら、C++にはそのような機能はないと思ってください。


実行時型情報を扱う機能はC++には仮想関数などごく一部しかありません。
そのような機能が必要な場合は別の言語を使うことをお勧めします。
    • good
    • 0
この回答へのお礼

C++にはないのですか。。
残念。

実行時に扱う機能、
そのわずかな仮想関数は少し調べてみようと思います。

ありがとうございました。

お礼日時:2013/12/17 08:14

「何から」取得するのか, によって大きく変わる.



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

コンパイラを作成は
難易度が高そうなので私にはできなさそうです。

デバッグ情報からは拾えるのですね
(確かにデバッガで、各変数の方がわかりますものね。)

しかしリリースする実行体には、デバッグ情報は除外するので、その意味でも難しいてす。

あきらめます。

ありがとうございました!

お礼日時:2013/12/17 08:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!