
クラスのインスタンス名をクラス内で取得できますか?
今VC++6.0を使っています。例として下記のクラスのコンストラクタで
CTest::CTest() { TRACE("%s",typeid(this).name()); }
としておいて、
別なクラスで CTest testInst; を生成すると
デバッグエリアに 「class CTest *」 と表示することはできました。
これが出来るのなら、インスタンス名 testInst をCTestクラスの内部から
取得することは出来ないのかと思ったのですが、
取得することは可能なのでしょうか?
No.3ベストアンサー
- 回答日時:
オブジェクトの定義時に、名前をコンストラクタに渡すようなマクロでも作れば実現できなくもないのかもしれませんが、一般的には無理です。
また、そもそも名前のないオブジェクト、例えば、newで割り付けたオブエジェクトや一時オブジェクトはどうするのでしょうか?
名前をコンストラクタに渡すようなマクロ…試しに作ってみたのですが、
関数内でクラスの変数を生成したときは、いいのですが、
別クラスのメンバ変数として宣言した時はだめですね。
一般的には無理ということがわかりました。
ご回答有難うございました。
因みにこんな形で書いてみました
変数名を取るコンストラクタ
CTest::CTest(CString thisName):m_ThisName(thisName){}
を作って
#define CLASS_DISP_NAME(x,y) x y(#y);
でマクロを作って
CLASS_DISP_NAME(CTest,test2);
で呼出してみました。
No.2
- 回答日時:
この例において、testInstはインスタンス名ではなくて変数名。
あるインスタンスがどの変数から指されているかをインスタンス側で知ることはできません。
同じ一つのインスタンスが複数の変数から指されていることもあるわけだし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
C#において、同じインスタンス...
-
インスタンス参照でアクセスで...
-
クラスのインスタンス名をクラ...
-
フォームのCheck boxとOLEObjec...
-
C# インスタンスの破棄
-
C#の構造体の開放のしかた
-
JSPでの表示
-
SQLを連続発行する時の正しい(?...
-
Eclipse3でVisualEditorが起動...
-
VB.NET Newしたものを変数に代...
-
VB.NET getとsetの概念がわかり...
-
[VB.NET] インスタンス生成とイ...
-
エクセル(複数インスタンス)...
-
objective-cで分かりにくい所教...
-
「インスタンス」の意味をわか...
-
「タイプ初期化子が例外をスロ...
-
中学のクラス数
-
eclipse-Tomcatでのデバッグに...
-
【sendkeysメソッドが動かずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
private static という変数の修飾
-
C#において、同じインスタンス...
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
生成したインスタンスを削除す...
-
文字列を日付に変換でParseExce...
-
次の日本語の意味を教えて下さい
-
C#「オブジェクト参照が必要で...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
newしないインスタンス?実体化...
-
C#の構造体の開放のしかた
-
javaのクラスの作り方、エラー...
おすすめ情報