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

时间:2017-02-16 19:04:20

标签: c++ operator-overloading

我最近开始使用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;
}

1 个答案:

答案 0 :(得分:3)

你可以做

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

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