【发布时间】:2012-01-14 00:01:53
【问题描述】:
我对指向对象的指针数组有疑问:(..
我需要生成对象的动态向量,然后将其返回 为了在另一个类中操作它。在下面的代码中有 抽象的事件类和继承自它的 CarArrival 和 可以实例化。
在生成和填充数组的类中,我有这个函数:
Event** EventGenerator::getEvents() {
Event* cars[EVENTS];
for (int i=0; i<EVENTS; i++) {
cars[i] = new CarArrival(generator->getNextNumber(8,(float)sqrt(0.4)));
}
sort(cars, cars+(EVENTS), Event::cmp);
return cars;
}
我以这种方式在另一个类中调用这个函数:
Event** cars = generator->getEvents();
for(int i=0; i<EVENTS; i++) {
cout << i <<":" << (*cars)[i]->getScheduleTime() << endl;
}
打印第一个元素后,我得到“分段错误”。
我已经在网上阅读了一些内容,并且我知道我弄错了,因为 (*cars) 评估为 指向数组第一个元素的指针,实际上我可以打印第一个元素而不是另一个,但我不知道如何访问第二类中数组的每个元素。
我该如何面对?
谢谢大家,
阿尔伯托
【问题讨论】:
-
“我需要生成一个动态的vector对象”...嗯,如果只有
std::vector... -
只有在你真的需要时才使用指针。尽可能使用 STL,它经过充分测试,可以为您省去很多麻烦。
标签: c++ arrays object pointers