【发布时间】:2020-02-21 03:05:58
【问题描述】:
我正在尝试调整这个指向对象的指针数组的大小。本质上,我正在尝试创建一个指向对象的新指针数组,其大小是原始指针的两倍,用原始指针填充新指针,然后让原始指针指向新指针。
似乎一切正常,直到我尝试将新的分配给旧的。
如果我只是复制到新的临时数组,它就会运行。如果我尝试将临时的分配给旧的,它会给我一个错误。
这就是我正在使用的:
正在处理这个,它是类文件的数据成员:
tiger *tigerDen[10]; //Tiger array
并像这样扩展它:
if (tigerIndexTracker + 1 > tigerDenSize)
{
tigerDenSize = tigerDenSize * 2;
tiger* temp[tigerDenSize];
for (int count = 0; count < tigerIndexTracker; count++)
{
temp[count] = tigerDen[count];
}
tigerDen = temp;
}
真的不知道需要做什么才能使这项工作正常进行。希望得到一些帮助。
我得到的确切错误(不确定是否可以理解):
错误:将 'tiger* [(((sizetype)(((ssizetype >((zoo*)this)->zoo::tigerDenSize) + -1)) + 1)]' 分配给 ' 时的类型不兼容老虎* [10]' TigerDen = 温度;
有一个箭头指向赋值运算符。
编辑:tigerDenSize 只是一个设置为 20 的 int。tigerIndexTracker 是一个设置为 10 的 int。基本上,我正在做的是试图感知一个对象是否即将添加到将接管它的数组中这是限制,如果是这样,创建一个我可以将所有内容移动到的新数组。
【问题讨论】:
-
请提供minimal reproducible example。
tigerDenSize是编译时间常数吗?如果不是,您的代码依赖于非标准编译器扩展 (stackoverflow.com/questions/1887097/…) -
@drescherjm
tigerIndexTracker + 1 > tigerDenSize表明此代码的目的是使tigerDen更大。但是 C++ 不是这样工作的。你不能让tigerDen更大。 -
tigerDen = temp;不起作用。而tiger* temp[tigerDenSize];是一个局部变量。 -
我正在尝试调整这个指向对象的指针数组的大小。您无法调整
c++中的数组大小,它是固定的编译时的大小。如果不允许使用std::vector,则必须动态分配内存。 -
@WaresEngineer
tiger* temp[tigerDenSize];是一个指针数组,而tiger* temp = new tiger[tigerDenSize];是一个tigers 数组。我猜这个错误是因为tiger没有默认构造函数?
标签: c++ arrays object pointers