我正在尝试做这样的事情(完全是合成的示例,因为实际代码有点麻烦):
enum MyInfoType
{
Value1, Value2
};
template<typename T> struct My_Type_Traits
{};
template<> struct My_Type_Traits<int>
{
typedef MyInfoType InfoType;
};
template<typename T>
class Wrap
{
template<My_Type_Traits<T>::InfoType INFO> int GetInfo()
{...}
};
...
Wrap<int> w;
int info = w.GetInfo<Value1>();
因此,基本上我正在尝试从另一个结构内部使用typedef作为模板参数的类型。但是,使用此代码,编译器会抱怨
struct My_Type_Traits<T>::InfoType is not a type
。那么我需要做些什么才能使这项工作呢? 最佳答案
您需要使用typename
关键字:与typename My_Type_Traits<T>::InfoType
类似,以使编译器知道您所引用的是嵌套类型。