2014-11-17 62 views
-2
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 ++编译器编译。错误消息是:如何在typedef中使用模板化类的数据成员

错误:太少模板参数列表

有人可以请解释。

感谢&问候, 范·萨尔

+0

大概在你打电话的方式'func',请加那部分代码替换上述说法。 –

+2

什么是'B',到处使用? – P0W

+1

我们只是简单地猜测*这是什么?如何发布*实际*代码,包括相关的模板/类? – WhozCraig

回答

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; 
+0

您已经编辑了在问题中进行更改...... – sop

相关问题