C ++ исправляет предупреждение о неиспользованном параметре с полиморфизмом

Я получаю некоторые предупреждения компилятора для моей программы относительно неиспользуемых переменных, и я хотел бы знать, что является подходящим способом исправить это.

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

Таким минимальным примером будет:

В шапке:

    class car{
public:
virtual void init(int color, int size)
private:
int size;
}
class sportscar : public car{
public:
virtual void init(int color, int size)
private:
int color;
int size;
}

В исходном файле:

    void car::init(int color, int size){
this->size = size;
}
void sportscar::init(int color, int size){
this->color = color;
this->size = size;
}

3

Решение

Все, что вам нужно сделать, это не называть их в реализации:

void car::init(int /* color */, int size){
this->size = size;
}
3

Другие решения

Вы можете опустить имя параметра функции.

void car::init(int, int size) {
this->size = size;
}

Иногда это нежелательно, потому что некоторые инструменты используют сигнатуру для извлечения документации, и вы определяете функцию как встроенную. Тогда вы можете использовать актерский состав.

struct car {
void init(int color, int size) {
(void)color; // prevent warning
this->size = size;
}
};

В то же время, пожалуйста, помните, что классам C ++ часто не нужны функции init, потому что для этого нужны конструкторы.

1

Нет необходимости называть параметры функции: если вы не используете параметр, просто оставьте его имя выключенным:

void car::init(int, int size) {
this->size = size;
}
0
По вопросам рекламы [email protected]