将类引用传递给void函数会产生错误

时间:2013-06-14 00:39:56

标签: c++

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

这是代码(它必须是void函数,不返回任何内容)。如果我更改函数以返回intstring它可以正常工作,但我不想这样做。

#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

2 个答案:

答案 0 :(得分:2)

getwheels会返回void,但您将其打印出来,就好像它有一个返回值一样。如果函数没有返回任何内容,则无法打印调用它的结果。

要解决此问题,只需在不打印的情况下调用该函数:

getwheels( my_car );

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

void getwheels(car& i_car)
{
    cout << i_car.wheels << endl;
}

答案 1 :(得分:1)

尝试从gowheels返回 wheel 而不是 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);
}