Как бороться с методами скрытия имен параметров? - PullRequest
2 голосов
/ 12 марта 2019

Приведенный ниже код, скомпилированный с gcc 4.9 с -std = c ++ 14 -Wshadow, выдает следующее предупреждение:

main.cpp:12:24: warning: declaration of ‘id’ shadows a member of 'this' [-Wshadow]

main.cpp:

#include <string>

class Foo
{
public:
   Foo(std::string id);
   const std::string& id() const noexcept;
private:
   const std::string m_id;
};

Foo::Foo(std::string id) : m_id(id) {}
const std::string& Foo::id() const noexcept { return m_id; }

int main(int argc, char** argv) { return 0; }

Кодовая база, которую я унаследовал, содержит много такого кода. Соглашение об именах, выбранное авторами оригинала (и я должен его придерживаться), требует, чтобы получатели не имели префикса «get». Переименование параметров, таких как id только ради того, чтобы избавиться от этого предупреждения, звучит как большая работа впустую. Сейчас я склоняюсь к добавлению завершающего подчеркивания - это нужно делать только в файлах .cpp, чтобы уродство не доходило до публичных заголовков. У кого-нибудь есть другие идеи?

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