我想根據指針的值爲const QList
賦值。C++爲const QList賦值if ... else
invar
是一個指針,如果是NULL
我想第一個值賦給const QList mylist
,如果不是NULL
,另一個值。但是觀察到const的正確性:之後我不打算改變mylist
的值。
是否有可能有
if(invar)
const QList<Type> zoneList = invar->getZones();
else
const QList<Type> zoneList = aList ;
我定義
zoneList
僅一次
,那麼,爲什麼這無法正常工作?
此外,我在我的方法的下一部分中使用zoneList
,我得到這個編譯錯誤:undeclared identifier
。
但我不能寫,要麼
const QList<Type> zoneList ;
if(invar)
zoneList = invar->getZones();
else
zoneList = NULL ;
,我有編譯器錯誤錯誤1
error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const QList<T>' (or there is no acceptable conversion)
是否有可能有一個分配給取決於這個常數的QList兩個不同的值條件?那麼寫什麼是正確的方法?
拉姆達的好用例。 – leemes 2013-04-24 07:25:45
@leemes:是的,我不久前發現它(我相信H.Sutter的博客),它讓我覺得這是一個很好的解決這個老問題的方法。從那時起,每當話題出現時,我都會盡力傳播。 ;) – syam 2013-04-24 07:28:32
實際上,在我們當前的工程中,我們使用了大量的const智能指針,但是當創建一個新的對象並設置屬性時,它不應該是const的,但我們必須返回一個const指針或繼續下一步用const指針。我們目前的「最好的我們可以得到」的解決方案是首先保持指針非常量和非智能,並且只在返回語句中「包裝」它,只要它應該是const。在這種情況下,我將您的解決方案集成在一起,這將會有很大的改進謝謝! – leemes 2013-04-24 07:32:14