Я изучаю C++ и не могу найти ответ на свой вопрос. Когда я запускаю свой код, я не получаю никаких ошибок компилятора, но я, когда я вызываю функцию «getVin ()» (предполагаемая для генерации случайного числа с использованием функции «генерировать ()»), это не делает так. Выводит ноль. Вот мой класс (из заголовочного файла):
class Vehicle {
public:
Vehicle();
static int generate();
const int getVin () { return m_vin; }
protected:
float m_lla[3];
const int m_vin = s_idgen;
private:
static int s_idgen;
};
И определение (из исходного файла):
int Vehicle::s_idgen = generate();
Vehicle::Vehicle() {
m_lla[3] = 0;
}
int Vehicle::generate() {
srand((int)time(0));
return (rand() % 10000) + 1;
}
Любой совет будет полезен, спасибо!
srand
только один раз. Например, функцияtime
обычно возвращает время в секундах, а это означает, что если вы вызываете функциюgenerate
несколько раз в течение одной секунды, вы сбрасываете начальное значение на одно и то же значение и получаете одно и то же случайное число. Кроме того, C++ имеет гораздо лучшие средства псевдослучайной генерации, чем обычныеsrand
иrand
, и я рекомендую вам использовать их вместо этого. - person Some programmer dude   schedule 11.10.2017const int m_vin = s_idgen;
А когда устанавливаетсяs_idgen
? - person juanchopanza   schedule 11.10.2017