How do I make the following function inside a class and then access this function from main? My class is just a collection of a bunch of static functions.
template<typename T> double foo(vector<T> arr);
How do I make the following function inside a class and then access this function from main? My class is just a collection of a bunch of static functions.
template<typename T> double foo(vector<T> arr);
Define the function in the .h file.
Works fine for me
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 );
}
You make a template class:
template<typename T>
class First
{
public:
static double foo(vector<T> arr) {};
};
Also note that you should pass vector
by reference, or in your case, also const
reference would do the same.
template<typename T>
class First
{
public:
static double foo(const vector<T>& arr) {};
};
You can then call the function like:
First<MyClass>::foo(vect);