1

重複の可能性:
C++ アプリケーションにリフレクションを追加するにはどうすればよいですか?

C ++でオブジェクトまたはクラスのクラス名、クラスメンバー、およびクラスメソッドを取得する方法はありますか?

Javaでは、次を使用できます。

Object.getClass().getMethods()
Object.getClass().getName()
Object.getClass().getDeclaredMethods();
Object.getClass().getDeclaredFields();
Object.getClass().getMembers();

QT に metaObject-Class があることは知っています。しかし、私はこのフレームワークを使いたくありません。boost-libary または STL に他に何かありますか?

http://doc.qt.digia.com/qt/metaobjects.html#meta-object-system

ありがとう。

4

2 に答える 2

3

C++11で一般的な考察を得る方法はありません。最も近い方法は、演算子を介して実行時型情報std::type_infoを使用してオブジェクトの型を取得することです。typeid

このtype_infoはから継承できるため、追加の型情報を手動で型に組み込むことができ、必要に応じてカスタマイズできます。これについては、BjarneStroustrupの著書「TheC++ProgrammingLanguage」「TheDesignand Evolution of C ++」で詳しく説明されていますが、そのWebリファレンスをすぐに見つけることはできません。

完全に反映するには、質問で述べたように、これが標準の将来のバージョンで利用可能になるのを待つ必要があります。C ++標準委員会サブグループ7(SG7)は、現在これに取り組んでいます。

http://isocpp.org/std/the-committee

于 2012-12-10T11:23:14.307 に答える
0

現在、C++ (C++11 でさえ) にはそのような機能 (リフレクション) はありませんが、この機能については C++14 について説明します: hereおよびhere (group SG7)も参照してください。

于 2012-12-10T11:17:21.683 に答える