QList<QPoint*> DrawingWidget::getCloseLinesById(int m_x, int m_y) {
QList<QPoint*> lines;
// HERE I APPEND ABOUT 5 ITEMS
return lines;
}
附加内容适用于此处。它只给了我一些警告,但它仍然编译。警告是。
taking address of temporary
但是这个
void DrawingWidget::mouseMoveEvent(QMouseEvent *event) {
if(m_mainWindow->getSelectedTool() == MainWindow::moveVertexTool) {
m_x = event->x();
m_y = event->y();
QList<QPoint*> points = getCloseLinesById(event->x(), event->y());
for(int i = 0; i < points.size(); i++) {
*points[i]->setX(event->x()); //error on this line
*points[i]->setY(event->y()); // error on this line
}
update();
}
}
}
导致这些错误:
void value not ignored as it ought to be
void value not ignored as it ought to be
因此它为两条线提供了相同的错误。
当我移动鼠标时,这段代码应该基本上移动我的线条。
如何解决此问题?
答案 0 :(得分:3)
您没有说明您的问题究竟是什么。但是你在错误的行中使用了额外的*
:
points[i]->setX(event->x());
此外,您没有显示您如何附加到列表中。我的猜测是警告来自你分配一些计算QPoints的地址。即使你编译它也会崩溃。只需使用QList<QPoint>
即可。它并不那么重。
答案 1 :(得分:1)
如果取消引用points[i]
,您将获得类型为QPoint&
的对象。您无法在非指针类型上使用->
运算符(除非该类型提供->
运算符的自定义定义)。
因此,删除这两行前面的*
应该可以解决错误。
奇怪错误消息的原因是,->
的优先级高于*
,因此编译器实际上尝试取消引用setX
/ {{1}的返回值}。
答案 2 :(得分:1)
'接受临时'是一个非常严重的情况。
您还可以不必要地解除其他两个错误。