3

関数を介してクラスの参照を渡そうとしていvoidますが、エラーがスローされます。

コードは次のとおりです (void関数である必要があり、何も返さない必要があります)。関数を return に変更した場合、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

getwheelsを返しますvoidが、戻り値があるかのように出力しています。関数が何も返さない場合、それを呼び出した結果を出力することはできません。

解決するには、印刷せずに関数を呼び出すだけです。

getwheels( my_car );

または、値を出力するつもりだったwheels場合は、関数内の値を出力します。

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

voidではなく getwheels からホイールを返すようにしてください

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 に答える