aoriso
@aoriso

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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::funcMockItem::funcを選択して検索した時にItemInterface::funcuserクラス内のfuncも見つかってほしいです。

0

No Answers yet.

Your answer might help someone💌