C++ 如何在C++;

C++ 如何在C++;,c++,function,c++11,tuples,typedef,C++,Function,C++11,Tuples,Typedef,我计划做的是将两个元组发送到一个函数中,然后返回一个元组 typedef tuple<float, float> complex_tuple; complex_tuple a_tuple(a, b); complex_tuple b_tuple(c, d); cout << sum(a_tuple, b_tuple); typedef元组复合元组; 复元组a(a,b); 复元组b(c,d); cout您的假设是std::cout和运算符的重载错误表示

我计划做的是将两个元组发送到一个函数中,然后返回一个元组

typedef tuple<float, float> complex_tuple;
  complex_tuple a_tuple(a, b);
  complex_tuple b_tuple(c, d);


    cout << sum(a_tuple, b_tuple);
typedef元组复合元组;
复元组a(a,b);
复元组b(c,d);

cout您的假设是
std::cout
运算符的重载错误表示
运算符您试图说您想将总和打印到
cout
,但
cout
不知道如何处理
复杂元组类型的值


提供超负荷的
运算符,例如iostream的东西不支持元组类型。我希望您知道复数已经是C++标准库的一部分。谢谢您,好心的先生!这比以前的解决方案效果更好。我不知道我能像那样操纵奥斯特雷姆!
tuple<float,float> sum(tuple<float, float>a, tuple<float, float>b){
  float a_real= get<0>(a);
  float a_imag= get<1>(a);
  float b_real= get<0>(b);
  float b_imag= get<1>(b);
  return tuple<float, float>(a_real+b_real, a_imag+b_imag);
}
0.cc:28:31: Error: no match for "operator<<" in "std::cout << sum(std::tuple<float, float>, std::tuple<float, float>)(b_tuple)"
ostream& operator<<(ostream& out, const complex_tuple& x);
ostream& operator<<(ostream& os, const complex_tuple& tuple) {
    os << get<0>(tuple) << "+" << get<1>(tuple) << "i";
    return os;
}