【发布时间】:2021-12-27 04:01:08
【问题描述】:
我试图创建自己的数组类(类似于 std::vector)只是为了好玩,但有一些问题...... Array 类代码本身可以工作并成功编译,但如果我尝试实例化 Array 类的对象,则会引发错误。
#include<iostream>
template<typename type, int size>
class Array
{
private:
type _mArray[size] = new type[size];
public:
int Access(int index)
{
return _mArray[index];
}
int Len()
{
return size;
}
void Insert(int index, type val)
{
_mArray[index] = val;
}
~Array()
{
delete[] _mArray;
}
};//All code above compiles successfully
int main()
{
Array<int, 2> name; //this line throws an error
}
我对 C++ 有点陌生,所以如果有人能解释一下,我将非常感谢....
顺便说一句,这是错误 数组初始化器必须是初始化器列表
【问题讨论】:
-
如果你想要一个像 std::vector 这样的动态数组,不要将 size 作为模板参数。大小的类型也不应该是 int 而是 std::size_t (避免必须检查索引
-
Array 类代码本身起作用 --
int main() { Array<int, 2> name; Array<int, 2> name2; name = name2; }-- 运行时双重删除错误。你今天仍有工作要让这段代码真正有用。 -
看起来更像
std::array(固定大小的数组)而不是std::vector(动态大小的数组)。