テンプレート化されたコンテナー クラス MyCont を作成しました。
#include <iostream>
template <class T>
class MyCont
{
public:
void SomeFunc();
T* list;
};
template <class T>
void MyCont<T>::SomeFunc()
{
std::cout<<"in function"<<std::endl;
//...
}
int main()
{
MyCont<int> y;
y.SomeFunc();
MyCont< MyCont<int> > x;
x.SomeFunc();
}
これはうまくいきます。ただし、型として MyCont を持つ MyCont の場合、SomeFunc() の動作を変更できるようにしたいと考えています。これを行う方法がわかりません(または可能かどうかもわかりません)。これを SomeFunc() の最初の定義の下に追加しようとしました:
template <>
void MyCont< MyCont<class T> >::SomeFunc()
{
std::cout<<"in altered function"<<std::endl;
//...
}
これはコンパイルされますが、呼び出されるのは常に最初の SomeFunc です
ありがとう