Templateプログラミング

構造体のテンプレート化

関数の引数のテンプレート化

template <typename T>
void method(T* _arg){}

とすると、うまく働かないんだけど、なんで?

クラスのテンプレート化

どんな型でもオッケーにする。c++の強力な機能
テンプレート関数はグローバル関数でなければならない。クラスの中のメンバ関数じゃだめ。
クラスの中のメンバ関数にテンプレートを使いたいときは、クラスのテンプレート化 をしないとだめ。

Class.h
template<class T> Class{
method(T* _in);
};

Class.cpp
// このテンプレートはこれに使う予定、と書いておかないと「未解決の外部参照」エラーになる
template class Class<int>;
template class Class<double>;
template<class T> void Class<T>::method(T* _in){
do something;
}

このClassを使うとき

#include "Class.h"
Class<int> myclass;

という風にする。

http://d.hatena.ne.jp/kasei_san/20070517/p1
http://d.hatena.ne.jp/pknight/20090826/1251303641

サポートサイト Wikidot.com