Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CPoint仅保存点x和y的整数值?选择?_C++_Mfc - Fatal编程技术网

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
};