所以我有一个需要将对象打印到ostream的ostream运算符。简单吧。我有一个打印功能,需要一个ostream,也做同样的事情。我的ostream被定义为我班上的朋友。我只想知道如何在我的操作符中使用我的打印功能...还有我的打印功能使用枚举
void Box::print(std::ostream & out, Box::Type type) const
{
switch (type)
{
case FILLED:
for (int i = 0; i < _height; i++)
{
for (int j = 0; j < _width; j++)
{
out << "x";
}
out << std::endl;
}
break;
case HOLLOW:
for (int i = 0; i < _height; i++)
{
for (int j = 0; j < _width; j++)
{
if (i == 0 || i == _height - 1 || j == 0 || j == _width - 1)
out << "x";
else
out << " ";
}
out << std::endl;
}
break;
case CHECKERED:
for (int i = 0; i < _height; i++)
{
for (int j = 0; j < _width; j++)
{
if ((i % 2 == 0 && j % 2 == 0) || (i % 2 != 0 && j % 2 != 0))
{
out << "x";
}
else
{
out << " ";
}
}
out << std::endl;
}
break;
}
}
std::ostream & operator<<(std::ostream &out, Box &b1)
{
return b1.print(out, Box::Type type) // obviously dosent exist here
}
答案 0 :(得分:0)
两个选项:
第一个是将Type
添加为类的成员,您可以从运算符中访问它。
第二个是用std :: pair实际重载ostream运算符。 例如:
ostream& operator<<(ostream& os, const std::pair<Box, Type>& p) {
p.first.print(os, p.second);
return os;
}