У меня есть вспомогательная функция, которая создает Array_Ref
объект.У функции есть параметр 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
, работает просто отлично:1033 *
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);
}