c++ - 如何使用运算符重载添加类变量和 int 变量?

标签 c++ operator-overloading

<分区>

我最近开始使用运算符重载。我想用一个随机整数值添加一个名为 Player 的类的值,并将这些值存储在另一个 Player 类对象中。这些值在重载函数内部看起来确实发生了变化,但是一旦我返回类值就消失了。有人可以告诉我哪里出错了吗?

#include <iostream>
using namespace std;

 class Player{
  int runs,reps;
  public:
  Player(int r,int rep){
      runs = r;
      reps = rep;
  }
  Player &operator+(int i){
      Player p(1,1);
     // cout<<"hi"<<this->runs<<endl;
      p.runs = this->runs + i;
     // cout<<"hi"<<p.runs<<endl;
      p.reps = this->reps + i;
     // cout<<"hi"<<p.reps<<endl;
      return p;
  }

  void showme(){
      cout<<runs<<"\t"<<reps<<"\t"<<endl;
  }
};
int main() {
    Player t(23,34),p(1,1);
    int i;
    i = 3;
    p = t + i;
    p.showme();
    return 0;
}

最佳答案

你可以

Player& operator+=(int i) {
      runs += i;
      reps += i;
      return *this;
}

friend Player operator+(Player p, int i) {
      return p += i;
}

关于c++ - 如何使用运算符重载添加类变量和 int 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282542/

相关文章:

c++ - 我如何从输入文件中的数字 "2007"中仅选择数字 "20071406"并将其存储在变量中?

c++ - Visual Studio 2013 Update 2 中的 C++ 改进是什么?

c++ - 为稀疏 vector 重载运算符 []

c++ - 重载>>输入矩阵(类)的功能不起作用

c++ - 为类重载输出 << 运算符以打印其中的元组

c++ - 为什么需要使用 "WINAPI*"作为语法来为 DLL 中的函数声明函数指针

c++ - 枚举<-> 字符串映射函数

c++ - 使用哪个 pcl 过滤器对点云进行下采样

c++ - C++ 中多重集的自定义 [] 访问

Swift 编译器无法解析泛型函数中数组的 + 运算符的正确重载