如何在c ++类中将this
传递给operator<<
?或者我只是做错了(可能)。
例如,在下面的类中,我只有一个重复请求的循环并打印一个整数。但是,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 :(得分:5)
this
是一个指针。你需要
cout << *this;
此外,您对operator<<
的定义可能应使用参数os
,而不是始终使用cout
。
答案 1 :(得分:1)
this
是一个指针。您可能需要取消引用它。
cout << *this;