繁体   English   中英

向量如何 <T> 被解析为模板函数的函数参数?

[英]How does a vector<T> get resolved as a function parameter for a templated function?

我有一个创建Array_Ref obj的辅助函数。 该函数有一个参数vector<t> -编译器正在抱怨。 我正在使用VS2010。

  • 我将函数本身放在.h
  • 我把函数放在Array_Ref.h
  • 我把它放在一个.cpp文件中。
  • 我把typenamefront 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放在相同的头文件中可以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::vector ,不是vector 另外,您似乎没有在任何地方定义Array_Ref

也许缺少std名称空间? vector更改为std::vector (避免在头文件中使用名称空间指令)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM