我需要编写一个模板,它根据模板参数是否是某个类的实例来生成一些代码。可以为所有类生成模板,但只有在该类是其他类的代码应该执行的子类时才可以生成该模板。在没有类实例的情况下在C++模板中检查类
问题是,应该实现的函数没有收到类的任何实例,所以唯一已知的是类名。所以这是不可能的dynamic_cast实现这一目标,因为它要求的对象
template<T>
class A
{
void somefunction(void)
{
if (T instanceof Foo) then ...
else ...
}
}
的情况下增加了一些解释
class X: public Foo {};
class Y {};
class A<X> {} // special logic is generated
class A<Y> {} // special logic is NOT generated
如果你需要在模板实例美孚特殊行为,我Ť嗨,你不需要一个模板类,你需要一个模板方法模式... ...# –
@Miguel天使:他只需要**它,如果他需要运行时多态性。 –