2016-05-18 12 views
0

編譯第三方庫時,我得到「錯誤:引用非const的初始值必須是左值」。錯誤發生在C++類的定義在此聲明的成員函數的:修復第三方庫代碼初始化一個常量的類成員函數引用參數

bool intersectsHierarchy(ON_Ray& ray, std::list<BVNode<ON_BoundingBox>*>& results = 0); 

基於I在網絡上發現的信息,我試圖使被初始化的參數是常量,如下所示:

bool intersectsHierarchy(ON_Ray& ray, const std::list<BVNode<ON_BoundingBox>*>& results = 0); 

但這只是導致另一個編譯錯誤。

任何想法如何最好地解決這個問題,讓我的圖書館編譯?

+0

擺脫'= 0'的傳遞變量第一個例子中的一部分?這是你的代碼還是其他人? – NathanOliver

+0

這是第三方庫代碼,所以是別人的代碼。我擔心如果我擺脫了0初始化值,我會創建一個bug。 –

+2

'0'和'std :: list *>'是不同的類型,後者不能從前者構造出來(除非明確地調用兼容的c'tor)。這是一個錯誤,沒有兼容的編譯器應該知道如何翻譯。 – IInspectable

回答

-1

刪除= 0部分 -

  1. 您不能分配0到列表
  2. 只能作爲參考而不是const
+0

*「你只能通過引用傳遞一個變量而不是一個常量值」* - 你可以很好地將引用綁定到整數文字。你不能將一個左值引用綁定到一個常量上,但它是不相關的,不管這個常量是一個整型文本還是一個常量變量。 – IInspectable

相關問題