Статические функции шаблона в классе - программирование
Подтвердить что ты не робот

Статические функции шаблона в классе

Как сделать следующую функцию внутри класса, а затем получить доступ к этой функции из основного? Мой класс - это всего лишь совокупность статических функций.

template<typename T> double foo(vector<T> arr);
4b9b3361

Ответ 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);