gpt4 book ai didi

c++ - 你能在 C++ OOP 中使用 'overload a cast' 吗?

转载 作者:太空狗 更新时间:2023-10-29 20:05:26 26 4
gpt4 key购买 nike

嗯,WinAPI 有一个 POINT 结构,但我正在尝试为此创建一个替代类,以便您可以设置 xy 的值 来自构造函数。这很难用一句话来解释。

/**
* X-Y coordinates
*/
class Point {
public:
int X, Y;

Point(void) : X(0), Y(0) {}
Point(int x, int y) : X(x), Y(y) {}
Point(const POINT& pt) : X(pt.x), Y(pt.y) {}

Point& operator= (const POINT& other) {
X = other.x;
Y = other.y;
}
};

// I have an assignment operator and copy constructor.
Point myPtA(3,7);
Point myPtB(8,5);

POINT pt;
pt.x = 9;
pt.y = 2;

// I can assign a 'POINT' to a 'Point'
myPtA = pt;

// But I also want to be able to assign a 'Point' to a 'POINT'
pt = myPtB;

是否可以重载 operator= 以便我可以将 Point 分配给 POINT?或者也许还有其他方法可以实现这一目标?

最佳答案

这是类型转换运算符的工作:

class Point {
public:
int X, Y;

//...

operator POINT() const {
POINT pt;
pt.x = X;
pt.y = Y;
return pt;
}
};

关于c++ - 你能在 C++ OOP 中使用 'overload a cast' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com