Я получаю некоторые предупреждения компилятора для моей программы относительно неиспользуемых переменных, и я хотел бы знать, что является подходящим способом исправить это.
У меня есть функция, которая наследуется базовым классом, и в реализации функции для родителя я не использую все параметры, необходимые для дочернего элемента; конечно, это приводит к предупреждениям, и, поскольку я не опытный программист, я не уверен, каков наилучший способ исправить эти предупреждения.
Таким минимальным примером будет:
В шапке:
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;
}
Все, что вам нужно сделать, это не называть их в реализации:
void car::init(int /* color */, int size){
this->size = size;
}
Вы можете опустить имя параметра функции.
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, потому что для этого нужны конструкторы.
Нет необходимости называть параметры функции: если вы не используете параметр, просто оставьте его имя выключенным:
void car::init(int, int size) {
this->size = size;
}