【问题标题】:Access More Derived Class functions/values in Curiously Recurring Template pattern以奇怪的重复模板模式访问更多派生类函数/值
【发布时间】:2015-09-02 21:43:38
【问题描述】:
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:基础 { //静态常量 int m_i2; }

那么我将无法做到这一点。任何可以解决问题的设计调整?

【问题讨论】:

    标签: c++ crtp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多