2013-10-28 64 views
0

我想編譯一個用C++語言編寫的Qt項目組件的項目我已經在其中一個類「DetectAll」中聲明瞭一個聲明,但是編譯器抱怨代碼語法並且完全停止在PointIndex()。在Qt項目中的C++語法

從這段代碼我明白,PointIndex是一個變量,它是Qt Project的內在變量,並作爲函數DetectAll中的第二個參數傳遞。但編譯器也提到QPair對我來說沒有意義,你能幫我發現我在這裏做錯了什麼嗎?

下面是原代碼和編譯器錯誤

protected: 
..... 
bool detectAll(const QPointF& pos, PointIndex& result = PointIndex()); 

///////////// 

D:\....\MAT\Skeleton_source\sswidget.h:87: error: could not convert 'QPair<int, int>()' 
from 'SSWidget::PointIndex {aka QPair<int, int>}' to 'SSWidget::PointIndex& {aka QPair<int, int>&}' 
bool detectAll(const QPointF& pos, PointIndex& result = PointIndex()); 
                    ^
+0

QPair在編譯點是否已知? (是否包括正確使用?)。 –

回答

1

變化

PointIndex& result = PointIndex()

PointIndex result = PointIndex()

在您的參數聲明。或者刪除默認值。您不能將非常量引用綁定到臨時。

您正在將引用分配爲編譯器所抱怨的默認值。另外,SSWidget::PointIndex看起來好像是QPair<int, int>,這就是你看到提及的原因。

相關SO問題here

+0

謝謝我幾乎可以肯定,我刪除了&符號,但似乎不知道我沒有 –

0

您收到的編譯器錯誤與指針有關。你確定你應該在減速中包含&符號嗎?

SSWidget :: PointIndex作爲QPair實現,並帶有模板。