繁体   English   中英

以奇怪的重复模板模式访问更多派生类函数/值

[英]Access More Derived Class functions/values in Curiously Recurring Template pattern

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;
    }

现在,如果我要派生更多的派生类,例如“派生2”,我想将其他值传递给Base,例如-

class Derived2:Base {//静态常量int m_i2; }

那么我将无法做同样的事情。 有任何可以解决问题的设计调整吗?

func可以调用derived_func ,以便它们处理变量,但是derived_func必须在所有子类中都具有相同的名称,并且必须单独编程(它们可以在基类中具有默认值)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM