Visual Studioの「参照の検索」でC++の仮想関数の参照を検索したい
解決したいこと
Visual Studio でC++のコードを書いています。
仮想メソッドを利用すると、参照の検索(Shift + F12)を使っても、参照箇所を見つけることができません。
Dependncy Injection等を使ったコードを書こうとするときに不便で困っています。
仮想メソッドの利用箇所を検索する方法はないでしょうか?
再現環境 | |
---|---|
OS | Windows 11 22H2 |
IDE | Visual Studio 2019 (Version 16.11.19) |
具体例
下記のようなコードにおいて、func()メソッドを検索しても、参照箇所を見つけることができません。
main.cpp
#include <iostream>
using namespace std;
// Interface
class ItemInterface
{
public:
virtual string func() = 0; // (1)
};
// 具象クラス
class Item : public ItemInterface
{
public:
string func() override { // (2)
return "This is actual item.";
};
};
// 具象クラス
class MockItem : public ItemInterface
{
public:
string func() override { // (3)
return "This is mock.";
};
};
// ItemInterfaceを使って何かするクラス
class user {
ItemInterface* pItem_ = nullptr ;
public:
user(ItemInterface*pObj) :pItem_(pObj) {};
void useItem();
};
void user::useItem() {
std::cout << (pItem_->func()) << std::endl; // (4)
};
int main() {
auto user1 = user(new Item());
user1.useItem();
auto user2 = user(new MockItem());
user2.useItem();
}
参照を検索した結果
上記のコードでは4か所の func() メソッドがありますが、それぞれの場所で 参照の検索(Shift+F12)を実行したときの結果は下記の通りです。
NGのうち、個人的に見つかってほしい箇所を太字にしています。
実行時 | ItemInterface | item | MockItem | userクラス内 |
---|---|---|---|---|
(1)ItemInterface | not found | found | found | not found |
(2)item | not found | found | not found | not found |
(3)MockItem | not found | not found | found | not found |
(4)userクラス内 | not found | found | found | not found |
期待すべき結果
ItemIterface::func
を選択して検索したときに、それを実際に利用しているuserクラス内のfunc
が検索できないため、利用箇所を探すのに非常に困っています。
続いて、具象クラスであるitem::func
やMockItem::func
を選択して検索した時にItemInterface::func
やuserクラス内のfunc
も見つかってほしいです。
0