実行時にオブジェクトの名前を取得できますか(RTTIを介してオブジェクトのタイプを取得するなど)?オブジェクトがその名前を印刷できるようにしたい。
Jack
質問する
25414 次
8 に答える
15
C++ のオブジェクトには名前がないため、取得できません。オブジェクトを識別できる唯一のものは、そのアドレスです。
それ以外の場合は、命名スキームを実装できます (つまり、オブジェクトにはその名前を持つ somechar*
またはstd::string
member が含まれます)。同様のアプローチを使用する 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 に答える