16

実行時にオブジェクトの名前を取得できますか(RTTIを介してオブジェクトのタイプを取得するなど)?オブジェクトがその名前を印刷できるようにしたい。

4

8 に答える 8

15

C++ のオブジェクトには名前がないため、取得できません。オブジェクトを識別できる唯一のものは、そのアドレスです。

それ以外の場合は、命名スキームを実装できます (つまり、オブジェクトにはその名前を持つ somechar*またはstd::stringmember が含まれます)。同様のアプローチを使用する QObject 階層を使用して、Qt で自分自身を鼓舞することができます。

于 2009-01-22T12:46:45.217 に答える
11

不可能です。オブジェクトには一意の名前はありません。

A a;
A& ar = a;  // both a and ar refer to the same object

new A;  // the object created doesn't have a name

A* ap = new A[100];  // either all 100 objects share the same name, or need to 
                     // know that they are part of an array.

最善の策は、オブジェクト コンストラクターに文字列引数を追加し、作成時に名前を付けることです。

于 2009-01-22T12:47:45.357 に答える
2

C++ は実際にはリフレクションをサポートしていません。ただし、少しグーグルすると、いくつかの代替方法が生成されますが、それらが役立つとは思えません。

于 2009-01-22T12:49:31.717 に答える
1

変数の名前を意味する場合、これは不可能だと思います。たぶん、GNU Debuggerオプションをオンにしてコンパイルした場合...しかし、そのようにしても、言語にはそれを行うための構造があるとは思いません。

于 2009-01-22T12:43:44.380 に答える