class SuperBase
{
virtual void func() = 0;
};
template <typename Child>
class Base: public SuperBase
{
void func()
{
cout<< static_cast<Child*>(this)->m_i;
}
};
class Derived1: Base<Derived1>
{
static const int m_i;
}
const int Derived1:m_i = 1;
int main()
{
SuperBase *iob;
iob = new Derived1();
iob->func();
return 0;
}
现在,如果我想引入更多派生类,如Derived 2,我想将不同的值传递给Base,如 -
类Derived2:Base { // static const int m_i2; }
然后我将无法做同样的事情。任何可以解决问题的设计调整?
答案 0 :(得分:1)
func
可以调用derived_func
来处理变量,但derived_func
必须在所有子类中都是相同的名称,并且必须单独编程(它们可以有默认值)在基类中)