我有一个基类和一个派生类,我想更改基函数,同时保持它们静态,因为它们应该作为静态传递给其他函数。
我怎样才能做到这一点?
ATL 框架通过将基类设为模板,然后让派生类将其类类型作为模板参数传递,从而绕过了无虚拟静态的限制。然后,基类可以在需要时调用派生类静态,例如:
template< class DerivedType >
class Base
{
public:
static void DoSomething() { DerivedType::DoSomethingElse(); }
};
class Derived1 : public Base<Derived1>
{
public:
static void DoSomethingElse() { ... }
};
class Derived2 : public Base<Derived2>
{
public:
static void DoSomethingElse() { ... }
};
这被称为奇怪的重复模板模式 http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern,可以用来实现静态多态性.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)