Граф звонящего для перегруженных операторов в Visual Studio 2005 - PullRequest
0 голосов
/ 25 марта 2010

Возможно ли получить график звонящих для перегруженных операторов?

У меня есть простая структура с естественным порядком, который я представлял, перегружая реляционные операторы. Оглядываясь назад на код, кажется, что я ошибся в определении operator >. Я установил большее, чем просто вернуть отрицание operator < (это не правильно, так как это будет означать, что (val1 > val2) == true при val1 == val2).

В любом случае, прежде чем это исправить, я хочу проверить, где в остальной части кода вызывается оператор >, чтобы убедиться в отсутствии непредвиденных последствий. Это кажется невозможным при использовании браузера вызовов Visual Studio 2005. Когда я ищу функцию, она распознает, где она определена в коде, но перечисляет отсутствие вызовов этой функции или от нее, что не соответствует действительности.

Помимо поиска по всем экземплярам ">" в коде моего проекта, у меня есть другие варианты?

Эта страница - http://msdn.microsoft.com/en-us/magazine/cc163658.aspx#S3 - указывает на то, что обнаружение вызовов оператора - это не то, что было изначально в VS2005, но я не могу сказать, изменилось ли это.

1 Ответ

2 голосов
/ 25 марта 2010
  1. Если класс, экземплярами которого являются val1 и val2, не имеет базовых классов, которые сами реализуют operator> Я предлагаю вам удалить определение operator> из файлов header и cpp и перекомпилировать. Это должно дать вам список всех вызовов operator>, гарантированных компилятором.

  2. Boost.Operators может помочь избежать таких ошибок в будущем. Он может автоматически предоставить operator!=, если вы предоставите operator==, например, то же самое относится к operator<=, operator> и operator>=, если вы предоставите operator<.

  3. Очень сложно найти все вызовы перегруженных операторов в коде из-за шаблонов и прекомпилятора: C ++ IDE для Linux с интеллектуальным поиском ссылок

...