ostream& operator <<(ostream& osObject, const storageRentals& rentals)
{
osObject << rentals.summaryReport();
return osObject;
}
Run Code Online (Sandbox Code Playgroud)
summaryReport() 是一个void函数,它给了我一个错误:
没有运算符"<<"匹配这些操作数
但如果我将summaryReport函数更改为a int,则错误不存在,但我遇到的问题是您必须返回一个值,并将其打印在屏幕上.
void storageRentals::summaryReport() const
{
for (int count = 0; count < 8; count++)
cout << "Unit: " << count + 1 << " " << stoUnits[count] << endl;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法cout <<用void函数重载?
Naw*_*waz 10
您应该将summartReporttake 定义ostream&为参数,如下所示:
std::ostream& storageRentals::summaryReport(std::ostream & out) const
{
//use out instead of cout
for (int count = 0; count < 8; count++)
out << "Unit: " << count + 1 << " " << stoUnits[count] << endl;
return out; //return so that op<< can be just one line!
}
Run Code Online (Sandbox Code Playgroud)
然后将其称为:
ostream& operator <<(ostream& osObject, const storageRentals& rentals)
{
return rentals.summaryReport(osObject); //just one line!
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,它不被称为"重载cout".你应该说,"超载operator<<了std::ostream.