2017-05-04 6 views
0
のQVector

警告:ネストされた初期化剤のリストを作成する方法、例えばQPairs

qvector.h(509):条件式が一定である(main.cppに) qvector.h(506):C4127警告:クラステンプレートメンバ関数 をコンパイルしながら 'QVector> :: QVector(STD :: initializer_list)' はQVector> :: QVector(STD :: initializer_list」[T = QPAIR]

は、テンプレートのインスタンスを関数への参照を参照してコンパイルされ) 'をコンパイル中

私のコード:

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

それは私がちょうど警告が(警告レベルを変更せずに)行って欲しい、罰金構築します。私は間違って何をしていますか?

/*編集*/

誰も警告が何であるか上の任意のコメントはありませんでしょうか?それは正確に何を意味するのですか、他の人々が警告を持っているかどうか?私はQVectorsのイニシャライザリストでQTドキュメントを調べましたが、それはあまり言いませんでした。誰も関数テンプレートのインスタンス化について一般に言うことは何もありませんか?

+0

は、貼り付けているセミコロンだけです。 –

+0

haha​​ yes;)ありがとうございました。 コンパイラがその場合のビルドに苦労すると思う – 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クラスのための列挙型の値を検索します!

やむを得ない警告、抑えるべきことがあります。

関連する問題