Выборочное наследование статического члена с CRTP - PullRequest
0 голосов
/ 07 июня 2018

поэтому у меня есть эта иерархия классов с использованием 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<B> и A<C> считаются отдельными классами,Но предположим, что для экономии ресурсов было определено, что «x» должен быть единичным экземпляром, совместно используемым B и C, в то время как экземпляр «y» должен быть создан для каждого производного класса.Есть ли способ сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете сделать шаблон класса производным от другого класса.Определите 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> {
}
...