2011-04-10 42 views
0
QList<QPoint*> DrawingWidget::getCloseLinesById(int m_x, int m_y) { 
    QList<QPoint*> lines; 
    // HERE I APPEND ABOUT 5 ITEMS 

    return lines; 
} 

這裏的附加工作。它只給了我幾個警告,但它仍然編譯。警告是。Qt創建者C++,void值不會被忽略,因爲它應該是

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 

所以它給出了兩行相同的錯誤。

當我移動鼠標時,這段代碼應該基本上移動我的行。

我該如何解決這個問題?

回答

3

你沒有說明你的問題究竟是什麼。但是,你正在使用額外*在出錯行:

points[i]->setX(event->x()); 

而且,你沒告訴你如何添加到列表中。我的猜測是警告來自您分配一些計算QPoints的地址。即使你編譯它也會崩潰。只需使用QList<QPoint>。這並不重要。

1

如果您取消引用points[i],您將收到一個類型爲QPoint&的對象。您不能在非指針類型上使用->運算符(除非該類型提供了->運算符的自定義定義)。

因此,在這兩行前刪除*應該修復錯誤。

的原因奇怪的錯誤信息是,->*的優先級高,所以編譯器實際上是嘗試取消引用setX/setY返回值。

1

'服用暫住地'是非常嚴重的病症。

您也不必要地解除引用其他兩個錯誤。

相關問題