【发布时间】:2014-10-27 17:14:38
【问题描述】:
我有一个生成新对象并将它们存储在数组中的类。问题是,一旦我添加第二个对象,第一个对象的数据就会被第二个对象的数据覆盖。 我究竟做错了什么? 谢谢
Rotor rot[100]; // How can I make this flexible?
int main(int argc, char **argv) {
for (int i = 1; i < (argc - 1); i++) {
ifstream inFile;
inFile.open(argv[i]);
if (inFile.fail()) {
throw std::invalid_argument("Error reading file!");
return 1;
}
rot[i] = Rotor();
int n;
while (inFile >> n) {
rot[i].import(n);
}
}
...
类转子:
#include "Rotor.h"
int inmap[26];
int outmap[26];
int impcount;
Rotor::Rotor() {
impcount = 0;
}
void Rotor::import(int i) {
outmap[i] = impcount;
inmap[impcount] = i;
impcount++;
}
现在转子[1].outmap[0] 一开始是1,但是在我添加转子[2] 之后,它变为与转子[2].outmap[0] = 2 相同的值。 还有一种方法可以使数组长度灵活,以便它只使用所需的空间吗?后面的方法需要用到。
谢谢
【问题讨论】:
-
Rotor rot[100]; // How can I make this flexible?=>vector<Rotor> rot; rot.resize(N);
标签: c++ arrays memory stack-overflow