2014-11-20 5 views
-3

Я знаю, что есть несколько подобных ранее заданных вопросов. Но ни один из них не получил широкого признания, и вектор указателей по-прежнему очень смущает меня.Вектор указателей класса

Вот код:
Представьте, что мы есть:

vector<member*> vector_member; 
for (int i = 0; i < n; i++){ 
    member* mem = new member(i); //constructor 
    mem->init(); //This function use a random number generator to give the member some randomness 
    vector_member.push_back(mem); 
} 

После выполнения этого кода, я считаю, что все случайное число для vector_member [я] то же самое!

У любого эксперта есть представление об этом?

+1

Любая возможность показать нам класс-член или функцию init? – DaaaahWhoosh

+1

Здесь нет ничего явно неправильного (хотя жонглирование сырыми указателями требует неприятностей). Что делает 'init'? Мы не можем догадаться, почему цифры могут быть одинаковыми, не видя, как они сгенерированы. –

+1

Здесь так много, что мы не можем видеть, включая фактическое создание номеров, на которые вы жалуетесь, что этот вопрос невозможен. Отправьте свой [testcase] (http://sscce.org) при написании отладочного вопроса. Благодарю. –

ответ

1

Мне нужно будет увидеть ваш метод init, но я предполагаю, что ваша случайная функция использует начальное значение, например текущее время (например, в миллисекундах с эпохи), чтобы инициализировать себя, и ваш код выполняется так быстро, что время не изменилось между вызовами, поэтому оно возвращает одно и то же случайное число.

+0

Вы забыли на самом деле предоставить решение. Во всяком случае, мы не должны этого делать, пока ОП не научится представлять свою тестовую версию. –

+0

Хорошо, спасибо за ваш ответ, и вы правы. Вопрос заключается в случайном семени. Теперь возникает вопрос: как генерировать N случайных чисел или N случайных семян одновременно? – LAWRENCE

+0

@ LAWRENCE: Запускайте генератор только один раз. –

Смежные вопросы