поиск близких имен функций-членов в C ++ - PullRequest
0 голосов
/ 24 января 2019

У меня только что была ошибка (моего собственного создания!), Которая проявлялась следующим образом. У меня был класс с виртуальной функцией-членом, которую мне нужно было расширить, добавив дополнительный параметр для некоторых новых вариантов использования. Я добавил его со значениями по умолчанию, чтобы он не прерывал текущие вызовы. То, что я пропустил, было то, что был другой класс, который унаследовал от этого класса, у которого было переопределение этой функции, которая больше не была переопределением. Хотя мне известно о ключевом слове override , чтобы избежать этого при добавлении нового кода, мне было интересно, есть ли способ найти все функции, которые достаточно лексически близки, чтобы быть возможными случаями подобной ошибки. Сделав это один раз, есть вероятность, что я мог сделать это когда-то в прошлом и хотел бы ретроспективно проверить базу кода.

1 Ответ

0 голосов
/ 24 января 2019

Clang имеет флаг предупреждения -Woverloaded-virtual

struct Base
{
    virtual void foo(int = 42) {}
};

struct Derived : Base
{
    virtual void foo() {} // Oups
};

Демо

Вас также может заинтересовать clang-tidy с modernize-use-override , чтобы добавить override и избежать этой ошибки в любом C ++ 11-совместимом компиляторе в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...