C++ 向量<;T>;是否将解析为模板化函数的函数参数?
我有一个helper函数,它创建了一个C++ 向量<;T>;是否将解析为模板化函数的函数参数?,c++,templates,C++,Templates,我有一个helper函数,它创建了一个Array\u Refobj。该函数有一个参数,vector,编译器对此表示不满。我正在使用VS2010 我将函数本身放在.h中 我将函数放入Array\u Ref.h 我把它放在一个.cpp文件中 我把typename放在向量的前面 我把typedef typename放在vector 似乎什么都不管用 它是std::vector,而不是vector。此外,您似乎没有在任何地方定义Array\u Ref。它是std::vector,而不是vector
Array\u Ref
obj。该函数有一个参数,vector
,编译器对此表示不满。我正在使用VS2010
- 我将函数本身放在
中.h
- 我将函数放入
Array\u Ref.h
- 我把它放在一个
文件中.cpp
- 我把
放在向量的前面typename
- 我把
放在typedef typename
vector
它是
std::vector
,而不是vector
。此外,您似乎没有在任何地方定义Array\u Ref
。它是std::vector
,而不是vector
。另外,您似乎没有在任何地方定义Array\u Ref
。是否缺少std
命名空间?将vector
更改为std::vector
(避免在头文件中使用名称空间指令)。可能缺少std
名称空间?将vector
更改为std::vector
(避免在头文件中使用名称空间指令)。我认为vector驻留在std名称空间中。尝试在矢量之前添加std::int s参数的用途是什么?另外,正如其他人指出的,我们不知道什么是Array_Ref。也许它也存在于它自己的名称空间中,并且应该被限定?我相信vector驻留在std名称空间中。尝试在矢量之前添加std::int s参数的用途是什么?另外,正如其他人指出的,我们不知道什么是Array_Ref。也许它也存在于它自己的名称空间中,应该是限定的?谢谢。我犯了愚蠢的错误。我加上了std::它起作用了。嗯,说得太快了——抱歉。谢谢。我犯了愚蠢的错误。我加上了std::它起作用了。嗯,说得太快了——道歉。
#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 : '<'
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);
}