2012-01-02 8 views
0
void operator<< (const Integer& left, const Integer& right) 
{ 
    cout << "\n: " << right.i; 
} 

は次のようにアクセスすることができます。オペレータの左オペランドを作る方法<<関数?

Integer obj; 
obj << 5 << 3 << 2; 

はファイン:<<演算子の左オペランドが関数であることを意味しqdebug() << 2;

よう

しかしqDebug作品。私は書くことができますように、ユーザー定義関数の構文がどうあるべきか


myfunc() << 2;

+1

呼び出される*関数 '* <<演算子ではなく、返されたオブジェクトからのものです。 – codeling

+1

実際、あなたのコードはコンパイルに失敗します。 'operator <<'への呼び出しを連鎖できるようにするためには、それ自身の最初のパラメータとして使用できる値を返す必要があります。通常、最初の引数への参照を返します。 – Gorpik

答えて

5

左のオペランドが関数ではありません、それは関数が返す値です。具体的には、qDebug()は、QDebugのインスタンスを返します。これには、約20のオーバーロードが<<と定義されています。

+1

したがって、関数は、必要に応じて動作する 'operator <<'関数を持つオブジェクトを返さなければなりません。 –

関連する問題