类中的静态模板函数

时间:2012-02-19 02:18:02

标签: c++ class templates static typename

如何在类中创建以下函数,然后从main访问此函数? 我的类只是一堆静态函数的集合。

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

2 个答案:

答案 0 :(得分:30)

在.h文件中定义函数。

适合我的工作

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

答案 1 :(得分:3)

您制作模板类:

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