我环顾四周,并没有找到我要找的东西。基本上我想要一个由基类专门化的函数模板。我不知道如何使它使用专门的功能。
意义...
class IBase
{
public:
virtual std::string func() const = 0;
};
class MyClass : public IBase
{
public:
std::string func() const { return "From MyClass"; }
};
template <class T>
std::string get_func(const T* t)
{
return "Unknown";
}
template <>
std::string get_func<IBase>(const IBase* t)
{
return t->func();
}
int main()
{
int a;
MyClass b;
get_func(&a); // <- Returns 'Unknown'. Good.
get_func(&b); // <- Returns 'Unknown'. Bad, want 'From MyClass'.
}
我使用的原因const T*
是因为IBase
是抽象的。