Dan*_*son 3 c++ typedef tuples function c++11
您好我是C++的新手,我试图创建一个带有两个复数的程序,对它们进行优化并返回总和.
我打算做的是将两个元组发送到一个函数并返回一个元组.
typedef tuple<float, float> complex_tuple;
complex_tuple a_tuple(a, b);
complex_tuple b_tuple(c, d);
cout << sum(a_tuple, b_tuple);
Run Code Online (Sandbox Code Playgroud)
这是我的功能:
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);
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
0.cc:28:31: Error: no match for "operator<<" in "std::cout << sum(std::tuple<float, float>, std::tuple<float, float>)(b_tuple)"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您试图说要打印总和cout,但cout不知道如何处理类型的值complex_tuple.
提供重载operator<<(ostream&, const complex_tuple&)以允许代码编译:
ostream& operator<<(ostream& os, const complex_tuple& tuple) {
os << get<0>(tuple) << "+" << get<1>(tuple) << "i";
return os;
}
Run Code Online (Sandbox Code Playgroud)
更多信息.