假设在我的c ++代码中定义一个自定义类型来处理3d中的向量:
typedef tuple<double,double,double> vector3d;
是否可以添加方法,以便我可以使用以下方法快速输出坐标:
vector3d somevector(1,1,1);
cout << somevector << "\n";
我知道我可以将这些对象包裹在class
或struct
中,但是可以直接做到这一点吗?
答案 0 :(得分:2)
为ostream
重载streaming operator。
typedef tuple<double,double,double> vector3d;
ostream& operator<<(ostream& os, const vector3d& vec)
{
os << '(' <<
std::get<0>(vec) << ',' <<
std::get<1>(vec) << ',' <<
std::get<2>(vec) << ')';
return os;
}
int main(int argc, char *argv[])
{
cout << vector3d(1, 2, 3);
return 0;
}