【发布时间】:2013-07-31 12:29:38
【问题描述】:
我想在 for_each() 函数中初始化一个指针向量:
#include <stdlib.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Cow{
public:
Cow(){ _age = rand()% 20; }
int get_age() { return _age;}
private:
int _age;
};
void add_new(Cow* cowp)
{
cowp = new Cow;
}
int main()
{
srand(time(NULL));
const int herd_size=10;
vector<Cow*> herd(herd_size);
for_each(herd.begin(), herd.end(),add_new);
cout << "Age: " << herd[0]->get_age() << endl; // line 27
}
但是,我在第 27 行收到运行时“分段错误”错误。群体向量似乎未初始化。为什么?
【问题讨论】:
-
请
:set nonu并用 cmets 标记有问题的行,以便我们可以复制粘贴代码并编译而不会浪费时间。 -
@jdero "add_new" 是对向量每个元素的回调函数。
-
请不要包含行号,这会让人们复制和粘贴非常烦人。只需用注释标记必要的行。
-
还有,不应该是herd[it]吗?
-
Jim:不,我只想打印第一个元素