こんにちは私のユーザー定義データ型オブジェクトを追加する演算子のオーバーロードを+(加算)演算子を実行しようとしています。 以下はそのコードです。標準オブジェクトとユーザー定義オブジェクトを追加する方法は?
#include <iostream>
using namespace std;
class complex {
int i;
double f;
public:
complex(int ii=0,double ff=0){
i = ii;
f = ff;
}
complex operator+(complex object) {
complex result;
result.i = this->i + object.i;
result.f = this->f + object.f;
return result;
}
void display() {
cout << i <<"\t"<< f;
cout << endl;
}
};
int main(){
complex obj1(1,1.1),obj2(2,2.2),obj3;
int i(5);
obj3 = obj1 + obj2;
obj3.display();
obj3 = obj3 + i;
obj3.display();
obj3 = i + obj3;//generates me compiler error
obj3.display();
return 0;
}
私はOBJ1 + obj2の操作を行うとき、それはobj1.operatorの+(OBJ2)として、コンパイラによって展開されていることを学びました。 コードの一部が正常に動作するようにします。
しかし、intとcomplexを追加すると、i.operator(obj1)として展開されると思います。
コンパイルエラーが発生します。
私は演算子+関数をint型で定義する必要がありますか?これを解決するにはどうすればよいですか? は、あなたが入力パラメータとしてint
とクラスcomplex
オブジェクトを引数に取り+
のオーバーロードされたバージョンを提供する必要があります、
私はあなたが事業者は、一般的にすることができ、そして何が、無料の機能として実装されなければならないかについてどこかで読んことを示唆しています。 – PlasmaHH