我有一个类似于以下的“静态”模板类:
#include <cstddef>
template <size_t elem_size>
struct StaticClass
{
static void* priv;
};
因此,该类仅包含静态成员。正如静态模板所暗示的那样,priv
每个elem_size
.
我也有已经从另一个类继承的主模板类:
template <class T>
class MainBase
{
// types, methods...
};
template <class T>
class MainDerived : public MainBase<T>
{
// members, methods...
};
现在,我希望MainDerived
能够访问StaticClass<sizeof(T)>
;这意味着T
相同大小的不同类型将访问相同的变量。这样做的最佳方法是什么?我主要考虑内存占用。
AFAICS,具有非静态StaticClass<sizeof(T)>
成员MainDerived
将类大小增加 1(对于“静态”类的大小为 1)。
所以我正在考虑三种方法中的任何一种:
- 继承自
StaticClass
(然后是多重继承), - 定义类型的静态成员
StaticClass
, - 直接访问
StaticClass<sizeof(T)>
方法。
所有三种方法都将产生相似的源代码(需要以一种或另一种方式明确说明类),并且它们都不会影响sizeof(MainDerived<T>)
. 我想知道其中是否有我应该注意的其他含义。