我有一个帮助函数,它会创建一个Array_Ref
obj。该函数有一个参数,vector<t>
- 编译器正在抱怨。我正在使用VS2010。矢量<T>如何作为模板函数的函数参数被解析?
- 我自己把函数放在了
.h
。 - 我把功能放在
Array_Ref.h
- 我把它放在
.cpp
文件中。 - 我把
typename
在front of vector<T>
- 我把
typedef typename
在vector<T>
似乎没有任何工作的前面。
#include <vector>
template<class T>
Array_Ref<T> make_ref(vector<T> &v, int s)
{
return (v.size()) ? Array_Ref<T>(v,s): Array_Ref<T>(0,0);
}
我越来越:
error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed.
error C2988: unrecognizable template declaration/definition
error C2059: syntax error : '<'
但是,把这个在同一个头文件作为Array_Ref.h
作品就好了:
template<class T,int size>
Array_Ref<T> make_ref(T (&p)[size])
{
return (p) ? Array_Ref<T>(p,size): Array_Ref<T>(0,0);
}
矢量驻留在我相信的std名称空间中。尝试添加std :: vector之前 –
什么是int s参数?另外,正如其他人指出的 - 我们不知道什么是Array_Ref。也许它也存在于它自己的命名空间中,并且应该是合格的? – Tomek