Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量<;T>;是否将解析为模板化函数的函数参数?_C++_Templates - Fatal编程技术网

C++ 向量<;T>;是否将解析为模板化函数的函数参数?

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

我有一个helper函数,它创建了一个
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);
}