Статические функции шаблона в классе Как сделать следующую функцию внутри класса, а затем получить доступ к этой функции из основного? Мой класс - это всего лишь совокупность статических функций. template<typename T> double foo(vector<T> arr); Ответ 1 Определите функцию в файле .h. Прекрасно работает для меня хиджры #include <vector> #include <iostream> using namespace std; class A { public: template< typename T> static double foo( vector<T> arr ); }; template< typename T> double A::foo( vector<T> arr ){ cout << arr[0]; } main.cpp #include "a.h" int main(int argc, char *argv[]) { A a; vector<int> arr; arr.push_back(1); A::foo<int> ( arr ); } Ответ 2 Вы создаете класс шаблона: template<typename T> class First { public: static double foo(vector<T> arr) {}; }; Также обратите внимание, что вам следует передать vector по ссылке, или в вашем случае также ссылка const будет делать то же самое. template<typename T> class First { public: static double foo(const vector<T>& arr) {}; }; Затем вы можете вызвать функцию, например: First<MyClass>::foo(vect);
Ответ 1 Определите функцию в файле .h. Прекрасно работает для меня хиджры #include <vector> #include <iostream> using namespace std; class A { public: template< typename T> static double foo( vector<T> arr ); }; template< typename T> double A::foo( vector<T> arr ){ cout << arr[0]; } main.cpp #include "a.h" int main(int argc, char *argv[]) { A a; vector<int> arr; arr.push_back(1); A::foo<int> ( arr ); }
Ответ 2 Вы создаете класс шаблона: template<typename T> class First { public: static double foo(vector<T> arr) {}; }; Также обратите внимание, что вам следует передать vector по ссылке, или в вашем случае также ссылка const будет делать то же самое. template<typename T> class First { public: static double foo(const vector<T>& arr) {}; }; Затем вы можете вызвать функцию, например: First<MyClass>::foo(vect);