Hey, ich hab folgendes Problem...
Ich möchte etwas einbauen und erhalte permanent bei dem einen Fehler
Ich benötige folgendes "Pseudo-radmon number generation"
Der Codeblock:
std::random_device rd;
std::mt19937 gen(rd());
std::discrete_distribution<> d({ 200, 100, 20, 10, 5, 1 });
#define std std -> ist vorhanden.
in der Windowsversion vom Source wird mir folgendes angezeigt:
namespace "std" has no member "random_device"
namespace "std" has no member "mt19937"
namespace "std" has no member "discrete_distribution"
Ich compile via Freebsd.
Diese Fehlermeldungen erhalte ich beim compilen:
char_item.cpp:8462: error: 'nullptr' was not declared in this scope
char_item.cpp:8475: error: 'nullptr' was not declared in this scope
char_item.cpp:8582: error: 'nullptr' was not declared in this scope
char_item.cpp:8858: error: 'random_device' is not a member of 'std'
char_item.cpp:8858: error: expected `;' before 'rd'
char_item.cpp:8859: error: 'mt19937' is not a member of 'std'
char_item.cpp:8859: error: expected `;' before 'gen'
char_item.cpp:8860: error: 'discrete_distribution' is not a member of 'std'
char_item.cpp:8860: error: expected primary-expression before '>' token
char_item.cpp:8860: error: expected primary-expression before '{' token
char_item.cpp:8860: error: 'd' was not declared in this scope
char_item.cpp:8862: error: 'gen' was not declared in this scope
Ich habe in div. C++ Foren nachgeschaut um das problem selbst zu lösen - nur finde ich:
"random is not a standard C++ function; it's a POSIX function"
"use the new C++11 randomness library."
"That header is new to C++11. Try using -std=c++11 or -std=c++0x. Also, make sure your compiler is up to date."
Ich habe bereits folgendes versucht:
#include <cstdlib>
#include <stdlib.h>
#include <random> -> fatal error: 'random' file not found
einzufügen - jedoch bringt das nichts.
Desweiteren versuchte ich bei den CFLAGS folgendes hinzuzufügen:
-std=c++11
oder
-std=c++0x
bekam nur Fehlermeldungen
Jemand eine Lösung wie ich die Pseudo-randoms zum funktionieren bekomme?
Danke schon mal...
LG