Я хотел бы инициализировать вектор указателей в for_each() функция: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. стадного вектор, кажется, неинициализирован. Зачем?
Пожалуйста, ': установите nonu' и назовите соответствующие строки комментариями, чтобы мы могли скопировать-вставить код и скомпилировать, не обманывая. –
@jdero "add_new" - это функция обратного вызова для каждого элемента вектора. – Mahesh
Пожалуйста, не включайте номера строк, это очень раздражает людей для копирования и вставки. Просто отметьте необходимые строки комментариями. – BoBTFish