Operator overloading 保存未參與運算項目

如何保存 C++ operator overloading 未參與運算項目的原始值 以下程式 重置運算子 '+' 改為可做座標值加法運算, Class Position 變數有 px, py and name 執行 PosC = PosA + PosB; 後 "PosC" 名稱變成 "null" 請問應該如何寫才能保存 PosC" 的名稱? #include <iostream> using namespace std; char *null = "null"; struct... show more 如何保存 C++ operator overloading 未參與運算項目的原始值
以下程式 重置運算子 '+' 改為可做座標值加法運算,
Class Position 變數有 px, py and name

執行 PosC = PosA + PosB; 後 "PosC" 名稱變成 "null"
請問應該如何寫才能保存 PosC" 的名稱?



#include <iostream>
using namespace std;

char *null = "null";

struct Position
{
Position(int x, int y) : px(x), py(y) { name = null; };
Position(int x, int y, char *n) : px(x), py(y), name(n) {};
Position operator+(Position &other);
void Display() { cout << name << ": " << px << ", " << py << endl; }

private:
int px, py;
char *name;
};

Position Position::operator+(Position &other)
{
return Position(px+other.px, py+other.py);
}

void main()
{
Position PosA = Position(22, 222, "PosA");
Position PosB = Position(33, 333, "PosB");
Position PosC = Position(44, 444, "PosC");

PosA.Display();
PosB.Display();
PosC.Display();

cout << "-> PosC = PosA + PosB\n";
PosC = PosA + PosB;
PosC.Display();

system("pause");
}

執行結果 "PosC" 名稱變成 "null"
PosA: 22, 222
PosB: 33, 333
PosC: 44, 444
-> PosC = PosA + PosB
null: 55, 555
2 answers 2