【发布时间】:2012-09-06 16:42:09
【问题描述】:
在编写偏移数组类时(您的 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 的向量。
【问题讨论】:
-
它必须有自动存储还是可以是动态数组?无论如何,为什么不使用
std::vector?编译器可以使它与 C 数组一样高效,而且您不会遇到这个问题。 -
出于性能原因,我想将其作为数组,但现在我将其更改为 vector
。 Tnx
标签: c++ arrays initialization