tipos template plantillas c++ class templates static typename

plantillas - template en c++ pdf



Funciones de plantillas estáticas en una clase (2)

¿Cómo hago la siguiente función dentro de una clase y luego accedo a esta función desde main? Mi clase es solo una colección de un montón de funciones estáticas.

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


Defina la función en el archivo .h.

Funciona bien para mi

ah

#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 ); }


Usted hace una clase de plantilla:

template<typename T> class First { public: static double foo(vector<T> arr) {}; };

También tenga en cuenta que debe pasar vector por referencia o, en su caso, también const referencia haría lo mismo.

template<typename T> class First { public: static double foo(const vector<T>& arr) {}; };

A continuación, puede llamar a la función como:

First<MyClass>::foo(vect);