hacker_mt
Messages postés35Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention 4 novembre 2010
-
4 nov. 2010 à 14:01
hacker_mt
Messages postés35Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention 4 novembre 2010
-
4 nov. 2010 à 17:28
Bonjour tout le monde, j'ai fait une classe en C++ qui utilise les fonction srand et time pour générer un nombre aléatoire dans une des méthodes de la classe.
Je l'ai codé sous linux d'abord avec gedit simplement, puis je l'ai compilé avec g++ et la compilation fonction parfaitement, et le programme fonctionne à merveille.
Cependant, j'ai voulu la reutiliser sous windows avec code::blocks, mais la le compilateur me renvoie un "error: 'time' was not declared in this scope".
voici la partie du code concernée :
#include "Jeu.h"
#include
#include <vector>
#include <cstdlib>
using namespace std;
Jeu::Jeu() // Constructeur par defaut
{
srand(time(NULL));
}
j'utilise rand() un peu plus loin qui lui ne génère pas d'erreur car il fonctionne lorsque je met la ligne "srand(time(NULL))" en commentaire.
Je me suis dit que c'était une erreur dans les include, mais je ne pense pas puisqu'il marche sous linux et que même sous windows code::blocks ne fait pas d'erreur de compilation ni sur srand, ni sur rand ...
Quelqu'un pourrait il trouver d'où vient le problème ?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 4 nov. 2010 à 17:12
J'avais oublié :p
#include <ctime>
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Fait le test suivant, compile ceci sous code::block:
#include <cstdlib>
int main()
{
srand(time(0));
return 0;
}
Si ça fonctionne, ton erreur doit être induite par quelque chose d'autre.
Sous Linux, as-tu bien pensé à compiler avec tous les flags ? (Si tu oublies des warnings, tu peux potentiellement passer à côté de problème de portabilité).
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
hacker_mt
Messages postés35Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention 4 novembre 2010 4 nov. 2010 à 17:06
J'ai testé ton code pour voir, seul et sans classes juste un main.cpp et ça ne compile pas !!!, et pour la portabilité je pense que c'est bon puisque sans l'utilisation du srand(time(0)), le code fonctionne parfaitement sous linux ET sous windows ... (se qui veux aussi dire que cela ne vient pas d'un conflit de namespace)
Donc d'après le test de ton code c'est le "time" qui ne veut pas fonctionner puisque j'ai le droit au même message d'erreur (error: 'time' was not declared in this scope)
J'ai l'impression que ca vient de code::blocks lui même ...
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 4 nov. 2010 à 17:26
Ça ne compile pas chez moi (sous Linux) :)
Peut être que l'un des tes includes incluait indirectement ctime. Je n'ai pas la réponse à cette question en tout cas.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question