メンバ関数テンプレート
http://www.geocities.jp/ky_webid/cpp/language/027.html
クラスのメンバ関数だけにテンプレートを適応させることもできます。
#include <iostream> using namespace std; class CSample { public: template <class T> void output (T& t) { cout << t << endl; } }; int main () { CSample obj; obj.output("foo"); return 0; }
$ main foo
また、テンプレートクラスの場合でもメンバ関数テンプレートを使えます。
#include <iostream> using namespace std; template <class T> class CSample { public: CSample (T t) : m_t(t) {} template <class U> void output (U& u) { cout << m_t << endl; cout << u << endl; } private: T m_t; }; int main () { CSample<int> obj(100); obj.output("foo"); return 0; }
$ main 100 foo
この場合、最初のTと別の型Uを使えば、別の型を扱えるようになります。
なんかどんどん見た目がややこしくなっていきますね。テンプレートって。