web-dev-qa-db-ja.com

クラス内の静的テンプレート関数

クラス内で次の関数を作成し、メインからこの関数にアクセスするにはどうすればよいですか?私のクラスは、静的関数の集まりです。

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

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

32
Tim Kachko

テンプレートクラスを作成します。

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);
3
Luchian Grigore