実行時にC++クラスインスタンスの識別子をプログラムで取得します。 C++はまだリフレクションをサポートしていないことを認識していますが、そこには別の解決策がありますか? 「my_obj」をプリントアウトする必要があり、このプログラムを実行する"this"ポインタを使用してオブジェクト名を取得することができます
class Foo {
Foo() {
auto name = reflect::getIdentifierName(this);
std::cout << name << std::endl;
}
};
void main() {
Foo my_obj;
}
:たとえば は、以下の例を与えます。 私は、この基本リフレクション機能を実装するために使用できるユーティリティライブラリを探しています。
libclangがこのような情報を抽出するために使用できるかどうか、もしそうなら、これを行うためのリフレクション関数をどのように構築するかについてのヒントがあります。
これはオブジェクトの識別子であるクラス名ではありません。名前をコンストラクタに文字列として与えて保存し、ゲッタから返すことを検討しましたか? – Yunnosch
オブジェクトには名前はなく、変数には名前がありません。オブジェクトと変数の間には、一般に1対1の関係はありません。 –
私はプログラムでクラスオブジェクトのインスタンスの名前を取得するのに役立つツールを探しています(クラスの名前ではありません)。例えばパーサーツール。 –