3

我正在尝试通过void函数传递类的引用,但它会引发错误。

这是代码(它必须是一个void函数并且不返回任何内容)。如果我将函数更改为返回int,或者string它工作正常,但我不想这样做。

#include <iostream>
using namespace std;
class car
{
 public:

   car()
   : wheels(4)
   {
   }

   int wheels;
 };

 void getwheels(  car& i_car )
 {
   //do something here
 }

 int main()
 {
   car mycar;

   mycar.wheels = 6;

   cout << getwheels( mycar )<< endl;
}

void就是问题所在。

4

2 回答 2

2

getwheelsvoidreturn ,但是您将其打印出来,就好像它具有返回值一样。如果一个函数什么都不返回,你就不能打印调用它的结果。

要解决,只需调用函数而不打印:

getwheels( my_car );

或者,如果您打算打印出该wheels值,请在函数内打印该值:

void getwheels(car& i_car)
{
    cout << i_car.wheels << endl;
}
于 2013-06-14T00:44:26.523 回答
1

尝试从 getwheels中返回轮子而不是void

int getwheels(const car& i_car)
{
  return i_car.wheels;
}

或者将std::ostream传递给 getwheels:

std::ostream& getwheels(std::ostream& out, const car& i_car)
{
  //do something here
  out << i_car.wheels << std::endl;;
  return out;
}

int main()
{
  car mycar;

  mycar.wheels = 6;

  getwheels(std::cout, mycar);
}
于 2013-06-14T00:44:56.693 回答