Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 逐点转换^_.net_Winforms_C++ Cli_System.drawing - Fatal编程技术网

.net 逐点转换^

.net 逐点转换^,.net,winforms,c++-cli,system.drawing,.net,Winforms,C++ Cli,System.drawing,我正在尝试使用鼠标左键移动我的表单。我有这个: if(e->Button == Windows::Forms::MouseButtons::Left) { Point^ mousePos = gcnew Point(); mousePos = Control::MousePosition; mousePos->Offset(mouse_offset->X,mouse_offset->Y); Location = mousePos;

我正在尝试使用鼠标左键移动我的表单。我有这个:

if(e->Button == Windows::Forms::MouseButtons::Left)
{
    Point^ mousePos = gcnew Point();
    mousePos = Control::MousePosition;
        mousePos->Offset(mouse_offset->X,mouse_offset->Y);
    Location = mousePos;
}
代码似乎正常,但视觉返回错误:

错误C2664:“无效” 系统::Windows::窗体::控件::位置::集(系统::绘图::点)' :无法将参数1从“System::Drawing::Point^”转换为 '系统::绘图::点'


我不明白-我创建了可变鼠标点作为点^。你知道怎么回事吗?

问题是该方法需要一个
,而你要给它传递一个
点^
(指向
点的托管指针
-weeee,这里有太多的“点”…。

点是一个值类(虽然不是一个不变的)。为什么要在(托管)堆上分配一个?在这个函数中,我看不出有任何理由这样做。

“我创建了可变鼠标点作为点^”-这就是问题所在。该方法需要一个点,但您给它一个指向点的指针。@H2CO3:您是对的,谢谢您的帮助:)当您编写这样的代码时,有一个更大的问题,您不理解引用类型(您使用帽子的类型)和值类型(如点)之间的区别。这非常重要,创建这样一个点会创建一个装箱值类型。它不是指向点的指针,而是对象引用。效率很低,在很多情况下编译器都会毫无怨言地接受。幸运的是,您在这里遇到了一个编译错误。任何关于C++/CLI的像样的书都会帮助您理解其中的区别。