【发布时间】:2012-01-12 15:16:19
【问题描述】:
对于特定类 A 专用的模板方法,有没有办法调用派生自 A 的类的专用代码?
最小的例子
#include <iostream<
class A
{};
class B : public A
{};
class Templator
{
public :
template <class T>
void dance(T *argument);
};
template <class T>
void Templator::dance(T *argument)
{
std::cout << "General implementation" << std::endl;
}
template<>
void Templator::dance<A> (A* )
{
std::cout << "Specialized implementation" << std::endl;
}
int main()
{
A a;
B b;
Templator tt;
tt.dance(&a);
tt.dance(&b);
return 0;
}
对应输出
特殊实现
一般实现
换句话说,我希望这两个输出是:
专业化实现
专业化实现
【问题讨论】:
-
感谢您的指导!
-
你可以看看我刚才问的这个问题:stackoverflow.com/q/7928871/20984
标签: c++ templates polymorphism