当前位置:  开发笔记 > 编程语言 > 正文

将此传递给重载<<运算符

如何解决《将此传递给重载<<运算符》经验,为你挑选了1个好方法。

如何传递thisoperator<<在C++类?或者我只是做错了(可能).

例如,在下面的类中,我只有一个循环重复请求并打印一个整数.但是,cout<只打印实例的地址,但我想使用定义的运算符重载.

#include
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;
}

aschepler.. 5

this是一个指针.你需要

cout << *this;

此外,您的定义operator<<应该使用参数os而不是总是使用cout.



1> aschepler..:

this是一个指针.你需要

cout << *this;

此外,您的定义operator<<应该使用参数os而不是总是使用cout.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有