C++ CPoint仅保存点x和y的整数值?选择?
我正在使用类C++ CPoint仅保存点x和y的整数值?选择?,c++,mfc,C++,Mfc,我正在使用类CPoint。我正在尝试并且成功地在CPoint的构造函数中传递double。经过一些测试,我发现CPoint将其值保存为LONG,根据定义,该值被定义为typedef LONG这太有用了。但是在检查了CPoint构造函数之后 // create an uninitialized point CPoint() throw(); // create from two integers CPoint(int initX, int initY) throw(); // create fro
CPoint
。我正在尝试并且成功地在CPoint
的构造函数中传递double。经过一些测试,我发现CPoint
将其值保存为LONG
,根据定义,该值被定义为typedef 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值保持为long
<强> C++中有预定义类/结构,它持有x和y点的浮点值吗?< /强> < /p>
也从CPLUPLUS中回顾C++变量类型,它看起来像是<代码>长int < /C> >和<代码> long double < /C>。编译器如何推断“<代码> Type f long long //Cuth>是<代码>长INT/CODE >,而不是<代码>长双?
< P> <代码> cPoint <代码>在C++中没有预先定义(它是由MFC库提供的)。C++不包含任何预定义的几何点类。使用时, < P> <代码> long < /Cord>被解释为 long int 。
在标准C++中,对于不同的值,可以使用<代码> STD::配对< /C> >:
typedef std::pair<long double, long double> point_t;
point_t t;
t.first = 10.0f;
t.second = -1.f;
除了其他人给出的有效答案之外,这里是我的输入。如果必须使用CPoint
(和POINT
),则可以从CPoint
派生一个类,并提供自己的构造函数和/或运算符,这些构造函数和/或运算符接受或给出浮点和双精度。如果您不进行客户端区域或GDI绘图,则可以使用自定义类或std::pair
类模板。std::pair
?和<>代码> long < /Cord>是一个使用代码> >长INT/COD>的快捷方式。注意,cPoint不是标准的C++库类,它来自MFC。@ Geoffroy不能做一些类似于<代码> TyPufsSTD::…CFPoint
?但是,我如何引用“x”CFPoint pnt;pnt.| |->| |?
看起来像它的pnt.first
或pnt->first
@另一个用户:它只是。first
。指针将使用->
,但pair
只是两种类型的变量(通常是两种不同的类型),与指针完全无关。
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
};