Visual Studio の「呼び出し階層の表示」機能で,メソッドを呼び出している場所を探したいとき,
コンストラクタを呼び出している(?)場所がほとんど表示されなくて不便に感じています.
(表示されないのは,コンストラクタは「実行される」だけであって「呼ばれている」わけではないから??)
例えば,以下のコードでの { a0
, a1
, ..., sp
} の6か所を見つけたい場合にはどうすれば良いのでしょうか?
C++
1#include <memory> 2 3struct A 4{ 5 A(){} //ctor 6 void F(){} //method 7}; 8 9//main 10int main() 11{ 12 //いろんなパターンで A を作ってみる. 13 //これらを全て見つけたい(探し出して表示して欲しい) 14 A a0; 15 A a1{}; 16 A a2 = A(); 17 A* p = new A; 18 auto up = std::make_unique<A>(); 19 auto sp = std::make_shared<A>(); 20 21 //メソッド F() のコール 22 a0.F(); 23 a1.F(); 24 a2.F(); 25 p->F(); 26 up->F(); 27 sp->F(); 28 29 return 0; 30}
上記コードで A::A()
と A::F()
について「呼び出し階層の表示」を実施してみると……
F()
を呼んでいる場所については,下図のように6箇所全てが表示されます.
他方,A()
については new A
の箇所のみが表示され,他の5つを見つけることができません(これが不便).
[編集]
タイトルを変更しました.
元のタイトルは【「呼び出し階層の表示」機能でインスタンス生成箇所を見つけたい】となっていましたが,見つける手段があるならばそれが「呼び出し階層の表示」機能である必要は無いので.
[追記]
別の機能である「すべての参照を検索」だと,「A
という型名が使われている個所が探される」という動作になる.

回答1件
あなたの回答
tips
プレビュー