如何在typedef中使用templatized类的数据成员

时间:2014-11-17 06:24:55

标签: c++

template <class T>
struct A {  
    typedef B type;
}


template<>
struct A<double> 
{
    typedef double type;
};


template<typename T, typename U>
B<U> func()
{
   A<U>::type my_type;
   my_type tmp;
}

此代码不能使用g ++编译器编译。错误信息是:

错误:模板参数列表太少

请有人解释一下。

谢谢&amp;问候, 范萨尔

1 个答案:

答案 0 :(得分:0)

首先抱歉有问题的错误。正确的问题应该是:

template <class T>
struct A {  
   typedef B type;
 }


template<>
struct A<double> 
{
   typedef double type;
};


template<typename T, typename U>
void func()
{
  typedef A<U>::type my_type;
   my_type tmp;
}

这里基本上问题是编译器对语句

感到困惑
typedef A<U>::type my_type;

无论是类的数据成员还是类型的数据成员。所以我们必须明确地说它是一种类型。 所以用以下陈述替换上述陈述

typdedef typename A<U>::type my_type;