2017-01-18 8 views
-3

thisoperator<<をC++クラスに渡すにはどうすればよいですか?または、私はこれを間違っている(可能性が高い)のですか?これをオーバーロードに渡す<<演算子

たとえば、次のクラスでは、整数を繰り返し要求して出力するループがあります。しかし、cout<<thisはインスタンスのアドレスを表示するだけですが、定義された演算子のオーバーロードを使用したいと思います。

#include<iostream> 
using std::cout; using std::endl; using std::cin; 

class C { 
    int n; 
public: 
    C(int n) : n(n) {}; 
    friend std::ostream& operator<<(std::ostream&, const C&); 
    void set_n(int i) { n = i; } 
    void play() { 
    int input; 
    while (true) { 
     cout << this; 
     cin >> input; 
     set_n(input); 
    } 
    } 
}; 

std::ostream& operator<<(std::ostream& os, const C& c) { 
    cout << c.n << "\n"; 
    return os; 
} 

int main(int argc, char *argv[]) { 
    C c = C(1); 
    c.play(); 
    return 0; 
} 
+0

cout << *this; 
'一方(真)COUT << *この;' – Raindrop7

+0

ヒント: 'this'はポインタであり、このようなのように作用します。 –

答えて

5

thisがポインタです。あなたは

cout << *this; 

はまた、operator<<のあなたの定義は、おそらく常にcoutを使用するのではなく、パラメータosを使用する必要があります必要があります。

1

はポインタです。おそらく、逆参照する必要があります。

関連する問題