0

次の2つの構造を検討してください。

template <typename T> struct duplet{
  QString str;
  T value;
}

struct MyObject{
QList<struct duplet> myList;
}

コンパイラは次のエラーをスローします。

エラーC3203:'デュプレット':特殊化されていないクラステンプレートをテンプレートパラメータ'T'のテンプレート引数として使用できません。実際のタイプが必要です。

私がつまずいたのは構文エラーですか、それとも違法な宣言ですか?

ありがとう、de costo

4

1 に答える 1

2

テンプレート引数として機能するには、テンプレートとしてのデュプレットを完全に指定する必要があるということだけだと思いますか?コンパイラは、mylistインスタンスがどのタイプであるかを認識していないため、mylistインスタンスを作成できません。'duplet'は(完全な)タイプではありません。'duplet <T> for sometypeT'はです。

struct MyObject {
QList<struct duplet<int> > myList;

template <typename T>
struct MyObject {
QList<struct duplet<T> > myList;

私にとっては問題なくコンパイルできます。

于 2011-03-31T00:29:12.193 に答える