C ++警告[-Wunused-value]

时间:2015-03-16 21:40:23

标签: c++ class constructor

我的c ++代码有问题,没有错误,只有警告阻止我的代码按原样运行。我想将屏幕尺寸乘以百分比而不是打印出来。

这是在我的.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:警告:表达式结果未使用[-Wunused-value]         second-> getScreen_size()* percentage;

我是新人,所以我不知道我做错了什么。

2 个答案:

答案 0 :(得分:3)

您正在计算second->getScreen_size()percentage的产品。

编译器告诉您结果未被使用。

计算产品仅在您对结果执行某些操作时才有用,例如将其存储在变量中。如果你不对它做任何事情,编译器只会删除它以提高程序的速度。

由于你编写了一些永远不会实际完成的东西,你的编译器会告诉你,你可能在那里犯了错误。由于这不是技术错误,因此编译器仅将其视为警告

答案 1 :(得分:1)

您实际上并未将multiply方法中的乘法值存储在任何位置。编译器警告您,因为代码行second->getScreen_size() * percentage;不存储结果或更改值。乘法的结果将被丢弃。

要修复警告,您应该将结果存储回某处的SmartWatch* second指针。我不确定你的班级设计是什么样的,但你可以这样做:

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

删除警告,然后使用您编写的方法实际完成某些操作。