2017-05-04 66 views
0
的QVector

警告:如何寫嵌套列表初始化劑,例如QPairs

qvector.h(509):警告C4127:條件表達式是恆定的(main.cpp中) qvector.h(506):在編譯類模板的成員函數 'QVector> :: QVector(標準:: initializer_list)' 被編譯與[T = QPair]

見參考起作用模板實例「QVector> :: QVector(標準:: initializer_list )'正在編譯

我的代碼:

QVector< QPair< double, float> > container(
     {{40, 0.0f}, 
     {70, 0.95f}, 
     {80, 0.7f}} 
); 

它建立好,我只想去警告(不改變的警戒線)。我究竟做錯了什麼?

/*編輯*/

沒有人對警告是什麼意見嗎?究竟是什麼意思?,其他人是否有警告?我查閱了關於QVectors的初始化列表的QT文檔,但沒有多說。一般來說,沒有人有任何關於函數模板實例的說法嗎?

+0

是你的粘貼中缺少的分號? –

+0

哈哈是的;)謝謝。 認爲編譯器會在這種情況下努力建設 – codeMetis

回答

0

這個警告似乎是不可避免的,與我的初始化列表不太一樣,更多與qvector有關。 爲Qvector任何構造檢查

if (QTypeInfo<T>::isComplex) 

這是一個簡單枚舉值,有幾個班,沒有模板,模板*,或模板下面列出的類名稱聲明的語法。願意向我解釋!

template <typename T> 
class QTypeInfo { enumbla;} 

template<> 
class QTypeInfo<void> { enumbla;} 

template <typename T> 
class QTypeInfo<T*> { enumbla;} 

因此,如果查找該適當QTypeInfo類,它是一個常數作爲一個枚舉耶枚舉值!

Yay不可避免的警告,更多的事情要壓制!