64,687
社区成员
发帖
与我相关
我的任务
分享
class AAA
{
protected:
explicit AAA(byte* const first) : mFirst(first) {}
public:
virtual ~MemStorageBase(void) {}
private:
AAA(const AAA&);
AAA& operator =(const AAA&);
protected:
byte* mFirst;
};
template <uint partitionSize>
class BBB : public AAA
{
static_assert(partitionSize >= sizeof(byte*), "partitionSize >= sizeof(byte*)");
public:
typedef uint size_type;
public:
BBB(void) : AAA(nullptr) {}
BBB(byte* const block, size_type size) : AAA(nullptr) {}
private:
BBB(const BBB&);
BBB& operator =(const BBB&);
};
template <typename MemPolicy, template MemStorage, uint count>
class CCC
{
static_assert(count > 0, "count > 0");
public:
typename uint size_type;
enum { MEMORY_ALIGNMENT = sizeof(byte*); }
public:
CCC(void)
{
// 在这里能够实现对”MemStorageBase mChunks[count]“的编译时初始化。效果如:
// mChunks = { MemStorage<MEMORY_ALIGNMENT * 1>, MemStorage<MEMORY_ALIGNMENT * 2> ... MemStorage<MEMORY_ALIGNMENT * count>};
}
private:
CCC(const CCC&);
CCC& operator = (const CCC&);
private:
// 希望这里能够被编译时初始化为
byte mChunks[sizeof(MemStorage) * count];
};