问题关于C++模板

问题描述:

我用一个简单的类有关模板的测试程序,这是我做的:问题关于C++模板

template <typename T> 
class test 
{ 
public: 
    test<T>::test(); 
    T out(); 
}; 

template <typename T> 
test<T>::test() 
{ 
} 

T test<T>::out() 
{ 
} 

int main() 
{ 
    //test<int> t; 
} 

但是,当我尝试编译它说“T”:未声明的标识符使用类模板需要模板参数列表,指向同一行,我已经实现了方法out()。任何人都可以请解释什么问题?我正在使用visual studio 2008.

您对out成员的定义缺少模板参数列表。出应改为: -

template <typename T> 
T test<T>::out() 
{ 
} 
+0

OP没有缩进代码,所以''被视为未知的HTML元素并被忽略。 – 2010-05-02 05:49:36

+0

哎呀 - 好点,虽然我认为答案仍然正确 - 我刚刚得到了错误的缺少参数列表。 – Stewart 2010-05-02 05:55:00

+0

@Marcelo坎多斯 - 改变。感谢您的反馈 – Stewart 2010-05-02 05:57:29

此行是错误的:

test<T>::test(); 

就这样写:

test(); 
+0

这是错误的;那只会定义一个新的*函数而不是类方法。 – tzaman 2010-05-02 05:58:03

+0

我想我应该更清楚。我指的是课堂上的声明,而不是后面的定义。 (分号应该给它。) – 2010-05-02 06:00:12

+0

哦,没有看到。 - ( - 1):) – tzaman 2010-05-02 06:01:58

以下是更准确:

template <typename T> 
class test 
{ 
public: 
    test(); 
    T out(); 
}; 

template <typename T> 
test<T>::test() 
{ 
} 

template <typename T> 
T test<T>::out() 
{ 
} 

1)唐在课程内不使用<T> 2)不要忘记在每个方法声明出来之前声明模板<T>在主体外部