【问题标题】:Selective static member inheritance with CRTP使用 CRTP 的选择性静态成员继承
【发布时间】:2018-06-07 18:52:45
【问题描述】:

所以我有这个使用 CRTP 的类层次结构:

template <class T>
class A { 
  static Object x;
  static OtherObject y;
}

class B : public A<B> {
}

class C : public A<C> {
}

最初的想法是 B 和 C 不共享 x 和 y 的实例,因为 A&lt;B&gt;A&lt;C&gt; 被认为是独立的类。但是假设为了节省资源,“x”应该是由 B 和 C 共享的单例实例,而“y”的实例仍然应该为每个派生类创建。有没有办法做到这一点?

提前致谢。

【问题讨论】:

    标签: c++ static crtp


    【解决方案1】:

    您可以使类模板派生自另一个类。在基类中定义x

    class ABase { 
      static Object x;
    };
    
    template <class T>
    class A : public ABase { 
      static OtherObject y;
    }
    
    class B : public A<B> {
    }
    
    class C : public A<C> {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2023-03-14
      • 2010-10-06
      • 2014-10-08
      相关资源
      最近更新 更多