如果T是從特定基類派生的,我想專門實現模板類。如果T是從特定基類派生的,那麼如何專門化模板類的實現
我該怎麼做?
在下面的代碼中,x.f()和y.f()應該做不同的工作。
我想不僅爲「派生」而且爲所有來自基類的派生類工作。
#include <iostream>
class Base
{
};
class Derived : public Base
{
};
// If T not derived from Base:
template <typename T> class MyClass
{
public:
void f()
{
std::cout << "NOT derived from Base";
}
};
// If T derived from Base:
template <typename T> class MyClass
{
public:
void f()
{
std::cout << "Derived from Base";
}
};
int main()
{
MyClass<int> x;
MyClass<Derived> y;
x.f();
y.f();
}
以下可能會有所幫助:https://ideone.com/tlxtbs – Jarod42 2014-10-02 13:15:05
更多的往往不是你** **真的想根據參數類的特徵專門化模板,而不是基於參數的繼承。在這種情況下...使用特質輔助類。 – ArunasR 2014-10-02 13:28:48