2015-03-16 3 views
-3

У меня проблема с моим кодом на C++, ошибок нет, но только предупреждение, которое мешает моему коду работать так, как должно. Я хотел бы увеличить размер экрана в процентах и ​​распечатать его.C++ warning [-Wunused-value]

это в моем файле .h:

SmartWatch* multiply(SmartWatch* second, double percentage); 

И это в моем .cpp файле:

SmartWatch* SmartWatch::multiply(SmartWatch* second, double percentage){ 
second->getScreen_size() * percentage; 
return second; 
} 

и это в основной:

SmartWatch *multiplied = &watch[0]; 
multiplied = multiplied ->multiply(&watch[1], 0.23); 
multiplied->print(); 

я получаю это предупреждение:

smartwatch.cpp: 69: 31: wa rning: выражение result unused [-Wunused-value] second-> getScreen_size() * percent;

Я новичок в этом, поэтому я не знаю, что я делаю неправильно.

+0

_ «Предотвращение работы моего кода так, как должно быть» _ - Какое поведение вы ожидаете и какое поведение вы наблюдаете? Если мы точно не знаем, в чем проблема, как вы ожидаете, что мы расскажем вам, как это исправить? –

+0

'second-> getScreen_size() * percent;' Таким образом, вы умножили два числа. Что вы делаете с результатом умножения? Прямо сейчас результат исчезает в тонком воздухе после выполнения этой линии. – PaulMcKenzie

ответ

1

Вы фактически не храните значение умножения в методе multiply в любом месте. Компилятор предупреждает вас, потому что строка кода second->getScreen_size() * percentage; не сохраняет результат или не изменяет значение. Результат умножения будет отброшен.

Чтобы исправить это предупреждение, вы должны сохранить результат обратно в указатель SmartWatch* second. Я не уверен, что ваш класс дизайн выглядит, но вы могли бы сделать что-то вроде:

second->setScreen_size(second->getScreen_size() * percentage); 

удалить предупреждение, а затем на самом деле чего-то достичь с помощью метода вы написали.

3

Вы вычисляете продукт second->getScreen_size() и percentage.

Компилятор сообщает вам, что результат не используется.

Вычисление продукта полезно, только если вы делаете что-то с результатом, например, сохраняете его в переменной. Если вы ничего не сделаете с этим, компилятор просто удалит его, чтобы повысить скорость вашей программы.

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