gpt4 book ai didi

c++ - CPoint 只保存点 x 和 y 的整数值?备择方案?

转载 作者:行者123 更新时间:2023-11-30 02:44:15 25 4
gpt4 key购买 nike

我正在使用 CPoint 类。我正在尝试并成功地在 CPoint 的构造函数中传递 double 值。经过一些测试后,我发现 CPoint 将其值保存为 LONG,根据定义,它被定义为 typedef long LONG; 这确实有帮助太多了。但是在查看了 CPoint 构造函数之后

// create an uninitialized point
CPoint() throw();
// create from two integers
CPoint(int initX, int initY) throw();
// create from another point
CPoint(POINT initPt) throw();
// create from a size
CPoint(SIZE initSize) throw();
// create from an LPARAM: x = LOWORD(dw) y = HIWORD(dw)
CPoint(LPARAM dwPoint) throw();

看起来它确实将 x 和 y 值保存为 longC++ 中是否有一个预定义的类/结构来保存 x 和 y 点的浮点值?

另外,审查 this page从 cplusplus 关于 C++ 变量类型,看起来有一个 long int 和一个 long double。编译器如何/为什么(我认为)推断 typedef long LONGlong int 而不是 long double

最佳答案

long 单独使用时被解释为 long int

要在标准 C++ 中保持不同的值,您可以使用 std::pair:

typedef std::pair<long double, long double> point_t;
point_t t;
t.first = 10.0f;
t.second = -1.f;

对于这种精确的情况,我更愿意定义一个特殊的结构来保存值,这样你就可以像运算符一样向它添加方法:

struct point_t {
long double x;
long double y;

point_t& operator+=(const point_t& rhs)
{ x += rhs.x; y += rhs.y; return *this; }

// and so on
};

关于c++ - CPoint 只保存点 x 和 y 的整数值?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384975/

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