Я пытаюсь генерировать случайные числа в своей программе на С++. Он работает на моем ноутбуке, который работает под управлением Windows. Однако, когда я пытаюсь скомпилировать свою программу на другом компьютере, я получаю следующие сообщения об ошибках:
error: ‘mt19937_64’ was not declared in this scope
error: expected ‘;’ before ‘randomGenerator’
соответствующий следующему фрагменту кода:
double** Euler::startSimulation(void) {
mt19937_64 randomGenerator (mySeed);
/* More unshown code below... */
}
Я компилирую свой код из командной строки, используя g++ с флагом -std=c++0x. Как мне решить эту проблему, чтобы мой код мог правильно компилироваться и работать на обоих компьютерах.
gcc - v
) Лучше использовать 'std=C++11', а не '-std=c++0x'. -и- Попробуйте добавить флаг-m64
в GCC. -или- Проверить, работает лиstd::mt19937
версия. -и- Попробуйте разрешить пространство имен явно:std::mt19937_64
вместо 'mt19937_64'. - person Ivan Aksamentov - Drop   schedule 19.08.2013sudo yum install gcc-4.8.1 glibc* libstd*
). Насколько я знаю, 4.8.1 — это первая версия, полностью написанная на C++11 (и последняя на данный момент стабильная). И +1 за использование RedHat =) - person Ivan Aksamentov - Drop   schedule 19.08.2013std::mt19937
иstd::mt19937_64
это всего лишьtypedefs
для спецификаций шаблона std::mersenne_twister_engine‹›< /а>. Вы можете попробовать сделать такие жеtypedefs
вручную (или свои, пользовательские). - person Ivan Aksamentov - Drop   schedule 19.08.2013