Почему я вижу "функцию-член с тем же именем, что и ее класс, который должен быть конструктором"? - PullRequest
0 голосов
/ 23 января 2019

У меня была полезная функция, которую я хотел преобразовать из автономной утилиты в вспомогательный класс в стиле RAII. Мое определение класса идет хорошо, пока я не вставлю код функции и не переименую его. На этом этапе имя функции подчеркнуто красным, и во всплывающей подсказке говорится, что «функция-член с тем же именем, что и ее класс, должна быть конструктором».

Это сообщение об ошибке не полезно. Я знаю , что не могу написать функцию с тем же именем, что и у класса (и поэтому предложенные дубликаты мне не очень полезны). Я хочу , чтобы эта функция была конструктором. Почему не так? Что происходит?

До:

void Useful( int Param ) // works, and is useful
{
    // do useful things
}

После того, как:

class Useful
{
    void Useful( int Param ) // generates error
    {
        // do useful things
    }
};

1 Ответ

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

Проблема в ошибке вырезания и вставки.Именно наличие возвращаемого типа предотвращает интерпретацию функции как конструктора.

Итак:

class Useful
{
    Useful( int Param ) // problem solved
    {
        // do useful things
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...