this
〜operator<<
を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;
}
ヒント: 'this'はポインタであり、このようなのように作用します。 –