1

テンプレートの << 演算子をオーバーロードしようとしていますが、このエラーが発生しています。

私が達成しようとしているのは、オーバーロードされた演算子 << です。これは、開き括弧、「、」で区切られたすべてのタブ項目、および閉じ括弧を 'out' に提供します。

ここに私のコードの一部があります:

template <typename T>
class arry{
    T *tab;
    int n;
public:
    arry(T *t, int x) : n(x),tab(t){};
    friend std::ostream & operator << (const std::ostream & out, const arry<T> & t)
    {
        out << "(";
        for(int i=0;i<t.n;i++){
            out << t.tab[i];
            if(i < t.n-1)
                out << ", ";
        }
        out << ")";
        return out;
    }
};

そして最悪の部分は、ビルド ログに 230 行のエラー行が表示され、この時点で少し混乱していることです。

4

1 に答える 1

6

オペレーターはストリームを変更するためのものであるため、最初のパラメーターをconst参照することはできません。に変更します

friend std::ostream & operator << (std::ostream & out, const arry& t)
于 2015-05-19T20:32:19.743 に答える