【发布时间】:2012-11-12 20:34:24
【问题描述】:
假设我有这个
#define T 10
StackOverflow *_stObject[H];
如何将这个数组“调整”为 20? 我不能使用向量。我必须将这 11 个位置复制到另一个具有 20 个位置的指针数组,但这样我就不能在我的其他函数中使用这个对象。
这个对象存储数据,当它满了我需要想办法继续添加数据。
我该怎么做?
好的,这里有更多信息,因为它不起作用。 我做了方法 extendArray() 但是当我做 r = temp 时它有一个错误
这是一个计算器,Reg 类存储了我在计算器中进行的操作的信息。对象“r”存储了 10 个操作,如果我进行超过 10 个操作,我必须扩展这个指针数组。
我收到的错误消息在 r = temp 中,它说: 'Reg* [20]' 到 'Reg* [10]' 的分配中的不兼容类型|
#define T 10
class Calculator
{
public:
Calculator();
Calculator(NumComp&,NumComp&);
~Calculator();
void printVisor();
void setCalculator(const NumComp&,const NumComp&);
void menu();
void help();
void clean();
void run();
void extendArray();
private:
NumComp n1, n2;
Reg *r[T];
int _tMax;
};
void Calculator::extendArray()
{
Reg *temp[T*2];
for(int i = 0; i < 5; i++){
temp[i] = new Reg;
temp[i] = r[i];
delete r[i];
}
r = temp;
_tMax *= 2;
}
【问题讨论】:
-
你不能。如果您想要一个实际可行的解决方案,您必须描述可以满足的要求。
-
为什么不能使用
std::vector? -
数组是静态数据结构,因此您不能在运行时调整它们的大小。
-
@Fernandes:我有这个需要存储数据的指针数组,当数组已满时,我必须“调整它的大小”才能继续存储数据。
-
@sftrabbit:我还没学过,我有一个大项目已经完成了 95%,这是我唯一还没做的事情。
标签: c++ arrays object pointers resize