我有两个类A和B,它们都是A中成员函数的模板类,我希望它在A的类型为B时以特殊方式起作用
正常情况下,对于其他任何类型,我都不知道该怎么做?
template <class B>
class B
{
private:
T m;
public:
...... any member functions
}
template <class T>
class A
{
private:
T var;
public:
void doSomething();
};
template <class T>
void A<T>::doSomething(){...........//implementation}
template <class T>
void A<B<T>>::doSomething(){................//different implementation}
最佳答案
您可以通过以下方式专门化A
:
template <class T>
class A<B<T>> {
// ...
};
这是partial template specialization的实例。
如果拒绝对整个类进行专业化,则可以将工作从
A<T>::doSomething()
推迟到部分专业化的函数doSomethingForA<T>(A &)
中,该函数可能是A<T>
的朋友。关于c++ - 专门化模板成员函数,以特殊的模板类以不同的方式工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29868008/