2013-08-18 3 views
1

Я пытаюсь создать случайные числа в моей программе на C++. Он работает на моем ноутбуке, который запускает окна. Однако, когда я пытаюсь скомпилировать свою программу на другой компьютер, я получаю следующее сообщение об ошибке:C++ Генерация случайных чисел с использованием Mersenne Twister

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. Как исправить эту проблему, чтобы мой код мог правильно компилироваться и запускаться на обоих компьютерах.

+2

Оба компьютера 64 бит? –

+0

да, оба компьютера 64 бит, однако, на моем ноутбуке я использую Microsoft Visual Studio 2012, тогда как я компилирую в командной строке на другой машине, которая работает linux – covertbob

+0

Какова ваша версия GCC? ('gcc - v') Лучше использовать 'std = C++ 11', а не '-std = C++ 0x'. -and- Попробуйте добавить флаг '-m64' в GCC. -или- Проверьте, работает ли версия 'std :: mt19937'. -and- Попробуйте явно разрешить пространство имен: 'std :: mt19937_64' вместо 'mt19937_64'. – Drop

ответ

1

mt19937 (_64) - calssified in namespace std.

Чтобы сделать их доступными, вам необходимо сообщить компилятору, где их искать. Используйте либо std::mt19937_64 RdmGeneratorObject(seed); руду, дайте директиву using namespace std;, прежде чем открывать объявление функции или основной.