¿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 muchas funciones estáticas.funciones de plantilla estáticas en una clase
template<typename T> double foo(vector<T> arr);
¿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 muchas funciones estáticas.funciones de plantilla estáticas en una clase
template<typename T> double foo(vector<T> arr);
Definir la función en el archivo .h.
funciona bien para mí
a.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);
}
Ahora funciona para mí ... interesante y extraño ... ¡Creo que el estudio visual es genial! jajaja – CodeKingPlusPlus
cada vez que declaras plantillas, defínalas en un archivo de cabecera y estará bien entonces)) –
No quieres tener que usar instrucciones en los archivos de encabezado: "using namespace std;" Utilice "std :: vector
Se crea 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);
¿Cómo llamo a esa función desde main? Recibo un error extraño después de llamar a mi función de esta manera: ClassName
Aquí tengo algunos puntos y comas innecesarios. –
Mostrar lo que intentaste. –
Esto es lo que probé ... Excepto que se coloca en una clase ordinaria – CodeKingPlusPlus
Dado que su clase es solo una colección de funciones estáticas, ¿quizás un 'namespace' sería mejor? – Yay295