为什么这不起作用? (为了他们的缘故!)
template<class T>
class A
{
typedef typename T::value_type value_type;
public:
A();
};
我收到了以下错误:
错误1错误C2825:'T':当后跟'::
但是T是一个班级,我刚刚指定那不是我吗?那么问题是什么呢? 感谢。
答案 0 :(得分:7)
T
可以是原始类型,具体取决于您实例化模板的方式......
答案 1 :(得分:2)
您在哪个模板专业化中遇到此错误?也许你在代码中的某个地方做A<int>
之类的事情。如果您想获得更好的信息,请提供有关产生错误的专业化的更多信息。
答案 2 :(得分:2)
'class'关键字在用于指定模板类型参数时具有不同的含义。事实上,template<class T>
和template <typename T>
完全等同,T可以是任何类型。写template<class T>
绝不告诉编译器T应该只是一个类类型。
答案 3 :(得分:0)
仅供参考:如果在从模板实际创建具体类时遇到相关问题,Visual C ++只会抛出此类错误。您应该能够从错误消息中轻松确定发生的位置,并查看该代码可能会帮助您解决此类问题。