为typedef

时间:2016-01-15 16:05:44

标签: c++ typedef

假设在我的c ++代码中定义一个自定义类型来处理3d中的向量:

typedef tuple<double,double,double> vector3d;

是否可以添加方法,以便我可以使用以下方法快速输出坐标:

vector3d somevector(1,1,1);
cout << somevector << "\n";

我知道我可以将这些对象包裹在classstruct中,但是可以直接做到这一点吗?

1 个答案:

答案 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;
}