如何在Visual Studio中找到特定类的重载运算符的所有引用?

How to find all references of a particular class's overloaded operator in Visual Studio?

本文关键字:重载 运算符 引用 Visual Studio      更新时间:2023-10-16

如果我有一个包含重载==操作符函数的类,我如何找出这个重载操作符在整个代码中使用的位置?(除了在重载的==方法中放置一个断点并查看代码是否碰到它。)我尝试在Visual Studio中进入类视图,右键单击该方法,并选择"查找所有引用",但当我知道至少有一个我添加的引用时,它声称没有引用。

暂时使操作符为私有且未实现。这将在编译时捕获这些用法。

注释掉类中的operator==声明并重新编译。

对Mark B的回答的更新:用=delete标记函数声明。这将适用于所有现代版本的Visual Studio,也适用于自由函数。

class Foo {
    bool operator == (const Foo &rhs) const =delete;
}
bool operator == (const Bar &lhs, const Bar &rhs) = delete;
...
Foo f1, f2;
if(f1 == f2) { // C2280 (…) : attempting to reference a deleted function

您可以尝试Visual Assist插件。它确实做了很多增强的语法突出显示,但我不认为它突出了重载操作符。

Visual Studio应该向您显示重载函数(使用箭头),尽管据我所见,没有办法为操作符显示这一点。