3

こんにちは、私は C++ が初めてで、2 つの複素数を取り、それらを合計して合計を返すプログラムを作成しようとしています。

私が計画しているのは、関数に 2 つのタプルを送信し、1 つのタプルを返すことです。

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


    cout << sum(a_tuple, b_tuple);

これが私の機能です:

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)"

私は何を間違っていますか?

4

3 に答える 3

5

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

詳細情報

于 2012-11-02T12:39:17.423 に答える