在编写偏移数组类时(您的 idx 从假设 100 到 1000,因此您创建的类考虑了这一点,而不会浪费数组中的前 100 个插槽)我遇到了一个问题。
如何初始化具有 C 元素数组的类(问题是 T 没有 def 构造函数)。基本上我希望阵列完全没有启动。例子:
class MyClass
{
MyClass(int i)
{
}
};
template <typename T, size_t n, size_t offset>
struct offsetedIdxArray
{
T data[n];// error line : error C2512: 'MyClass' : no appropriate default constructor available
offsetedIdxArray()
{
}
T& operator [](size_t pos)
{
return data[(pos-offset)];
}
};
用法:
offsetedIdxArray<MyClass, 1024,offset> oia;
制作 def 构造函数不是选项,因为我使用的类实际上是库类。
*编辑:* 与此处描述的问题无关,但事实证明我宝贵的库类没有复制 ctor,只是移动 ctor,所以我不得不使用 unique_ptr 的向量。