專業成員函數,我寫了一個模板容器類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;
//...
}
這編譯,但它始終是被稱爲
感謝
我認爲你需要完全專業化的類。哦,'free'類型在專業化開始時會進入'template <>''。 – Yakk