1

je dois rendre plusieurs variables accessibles à toutes les fonctions de mon projet, et donc je les ai mis dans le .h de mon namespace (le code des fonctions etant toutes dans le .cxx). Quand je compile, cela me di que les variables ne sont pas déclarées...
Et il me dit qu'il y a un erreur de syntaxe quand je delcare un vecteur (typedef vector <string> CVString) dans le namespace. Faut il le mettre absolument dans un programme ? Si c'est le cas, comment faire pour que ces variables soient vu par toutes les fonctions ?

Merci d'avcance

2

Quand tu définis CVString, est-ce que tu as fait "using namespace std;" avant?

Et puis sinon, c franchement pas possible de t'aider avec si peu d'info... Balance nous un extrait de code minimal pour reproduire l'erreur (et dans 80% des cas si tu essayes de faire ça tu vas même te rendre compte toi-même de l'erreur smile)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3


Quand tu définis CVString, est-ce que tu as fait "using namespace std;" avant?

non mais j'ai inclus les fichiers pour les string...
et dans un .h, on nous demande de ne pas utiliser des namespaces...

fichier nsDevoir.h

#include <vector>
#include <string>
...

namespace nsDevoir
{
typedef vector <string> CVString
typedef vector <bool> CVBool

CVString VCible (20);
int NbCible (0);

int Parcours (...);
int TraitementMakefile (...)

}

et dans le .cxx, je definis les fonctions Parcours...

4

et dans un .h, on nous demande de ne pas utiliser des namespaces...

Oui, dans ce cas-là il faut utiliser le chemin absolu, à savoir std::vector<std::string>

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

je vais essayer ca cet aprem...

Merci!

6

J'ai un nouveau probleme pour mon devoir. c pas le meme que celui la, mais je ne créé pas un nouveau topic a chaque fois...

J'ai fait une classe CCible, comprenant des variables tels que des entiers, des vecteurs, des char*, et des methodes.
Dans le namespace global de mon devoir (nsDevoir), la ou toutes les fonctions sont comprises. Dans ce dernier, je declare un vecteur de CCible de 40 cases.
Lorsque je compile il me mets des erreurs car il n'arrive pas à creer des CCibles avec aucun parametre (car quand je declare le vecteur e CCible, apparemmùent il essaie de créer 40 CCibles).
Comment faire pour pouvoir declarer ce vecteur pour que par la suite, je n'ai pas à utiliser push_back car cela fausserait mon algo) ?

Desolé de ne pas pouvoir vous apporter du code mais je ne travaille pas sur les meme pc, donc c pas tres pratique...
Merci d'avance

7

Je n'ai p-ê pas bien compris la question, mais lorsque tu crées un vecteur de CCible de taille 40, par défaut, il appelle le constructeur par défaut de CCible (oui, il y a bien deux "par défaut" cheeky); donc soit tu mets un constructeur par défaut plus ou moins bidon (si tu comptes les modifier par la suite avant de les lire, tu peux faire un truc parfaitement bidon, même si c'est moyennement propre), soit tu crées d'abord un CCible et tu appelles le constructeur de vector<CCible> via "vector<CCible>(40,ma_cible_de_départ)".

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

8

tu avais bien compris....
mais en fait je vais utiliser push_back car en fin de compte ca me faisait pas trop changer mon algo...

Merci Pollux!

9

je voudrais executer un script a partir de mon programme. j'ai entendu parler de execv, mais je n'arrive pas a le faire marcher...le script que je veux lancer n'au aucun arguments...

Merci d'avance

10

Ben je sais pas, tu l'utilises comment?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

en fait je dois lancer une commande (une compilation la plupart du temps)...

on ne doit pas utiliser system (trop lourd) donc on a pensé à faire un script, et puis a l'executer...

ex :

execv (NomduScript, 0)

0 car il n'y a pas d'arguments...

12

ce n'est pas plutôt execv("nom_du_script", (char*[]){0}) ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

13

avec mon ecriture, ca passe a la compil, mais ca marche pâs a l'exec...

14

Oui, parce qu'il faut passer un tableau contenant pour seul élément NULL, pas un pointeur nul...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

il me semble que je l'avais essayé aussi...j'en suis pas sur donc je tenterais ce soir...

merci