我有一个辅助函数,可以创建一个Array_Ref
obj。该函数有一个参数vector<t>
- 编译器正在抱怨。我正在使用VS2010。
.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);
}
答案 0 :(得分:6)
它是std::vector
,而不是vector
。此外,您似乎没有在任何地方定义Array_Ref
。
答案 1 :(得分:3)
可能缺少std
命名空间?将vector
更改为std::vector
(避免在头文件中使用命名空间指令)。