5

QVariantQSettingsクラスに必要)からの作成をサポートQMap<QString, QVariant>

しかし、次のようなものを初期化しようとしています:

QMap<QString, QVariant(QMap<QString, QVariant>)> i;

エラーが発生します:

関数を返す関数。

QMap<QString, QVariant>だから私はオーバーロードを試しQVariant()

エラー:呼び出しに一致する関数がありませんQVariant::QVariant(QMap<QString, QMap<QString, int> >&)

今、私は型キャストを試しました:

QMap<QString, (QVariant)QMap<QString, QVariant> > i;

そして得た

テンプレート引数2は、' 'トークンの
前の宣言で無効な無効な型です;

QMapでは、ネストされたオブジェクトをオブジェクトに変換するために必要なブードゥーは何QVariantですか?

4

2 に答える 2

6
  1. QMap<QString, QVariant(QMap<QString, QVariant>)>、文字列から関数型へのマップを定義しました。あなたが本当に欲しいのはですQMap<QString, QVariant>

  2. QMap<QString,(QVariant)QMap<QString, QVariant> >それは構文的に間違っているだけなので、あなたは望んでいません。両方のテンプレートパラメータは型名である必要があり、型キャストは型名の一部にすることはできません。

  3. QMap<QString, int>(または他のほとんどすべてのタイプのQMap)をに入れても機能しQVariantません。QMapに変換できる唯一のタイプQVariantQMap<QString,QVariant>。です。

    このタイプには、役立つ可能性のあるtypedefがありますQVariantMap。この状況での使用に固執すればQVariantMap、物事は適切に機能します。

于 2010-07-19T14:03:16.667 に答える
4

報告されているエラーはQVariant(...)、タイプではなく関数(c-tor)です。

使用する必要があります:マップに値を割り当てる場合にのみMap<QString, QVariant> i;使用します。QVariant(QMap<QString, QVariant>)ポイントはQVariant本当に何でもです。したがって、のマップはQVariantsintある位置(に含まれるQVariant)とQDate別の位置にあることができます。したがって、タイプを宣言するときに、保持するタイプを指定することはできませんQVariant

于 2010-07-19T13:51:29.847 に答える