CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

elhuron
elhuron
Niveau 6
22 novembre 2006 à 18:38:59

J´ai inclue le .h qui contient le "prototype" de la classe depuis ressource.cpp.

main.cpp
http://rafb.net/paste/results/2mRcHw79.html

ressource.cpp
http://rafb.net/paste/results/K1ddOi64.html

ressource.h
http://rafb.net/paste/results/bi91cq74.html

Fvirtman
Fvirtman
Niveau 10
22 novembre 2006 à 18:45:24

Il faut que tu déclares toute ta classe dans le .h avec toutes les méthodes.

Pas uniquement son nom.

exemple :

class Image
{
public:
Image(int);
Image(char*, int,int,int,int);
...
};

Apers, tu peux implémenter dans le .c

dnob700
dnob700
Niveau 10
22 novembre 2006 à 18:47:56

sachant quand même que tu as le droit de ne déclarer que le nom de la classe, mais dans ce cas là, tu ne pourras que créer des pointeurs vers cette classe, que tu ne pourra pas manipuler ou instancier.

elhuron
elhuron
Niveau 6
22 novembre 2006 à 18:58:49

ok, merci!
Mais le probleme est toujours pas resolu :(

Il me mettent une erreur pour redefinition de la classe Image.

ressource.h
http://rafb.net/paste/results/nG9q5k40.html

J´ai vider deux fois la classes Image dans le .h, mais rien a faire, toujours ce redefinition.

godrik
godrik
Niveau 30
22 novembre 2006 à 19:01:52

Le principe est simple en fait. La compilation de chaque .cpp se fait de facon séparé. Si le compilateur ne sait pas quelles sont les fonctions définies, il ne peut pas les deviner.

elhuron
elhuron
Niveau 6
23 novembre 2006 à 18:54:57

Oui, c´est evident, mais en meme temps, les fonctions dont j´ai besoin sont dans la classe, dont j´ai specifié le prototype.

D´ailleurs, j´ai recommencer un projet simpliste console, et ca fonctionne que quand, dans le .h, je met :

class Image;

C´est bizarre qu´il n´accepte pas cela dans mon autre projet, jvais tenter de resoudre ca.

Shiba_the_Inu
Shiba_the_Inu
Niveau 85
25 novembre 2006 à 13:29:34

Bonjour tout le monde, j´ai un petit problème qui me turlupine depuis quelques heures déjà en C...
Finalement en deux jours sur python (qui ma appris des trucs que je comprenais pas en C) je suis repassez en C mais y a un truc que je comprends pas...

En fait j´essaie de faire un petit rpg en mode console pour bien maîtrisé les bases mais j´arrive pas à faire un truc :
Je voudrais faire un truc dans le genre

while (1)
{
printf("choisissez votre perso en tapant guerrier ou ...etc \n");
/*et la je voudrais faire que quand on tape guerrier un message indique que l´on a choisi le guerrier et que plein de variable rentre en jeu (pv attaque etc...) ou quand on tape mage etc... et si on tape un mot qui ne marche pas on reçoit un message "choisissez en tapant soit guerrier soit..." et que l´on recommence la boucle...*/

}

Le truc c´est que j´ai essayé avec les gets() (d´ailleurs j´ai un warning qui me dit qu´il vaut mieux l´éviter... pourquoi ? dans tout les tutos ya marqué le contraire ? :gne: ) avec les scansf("%s",nom_de_variable) etc mais je comprends pas ce qui marche pas avec les if... et les variables char....

Je sais pas si c´est clair mais quelqu´un aurait une solution s´il vous plaît ? un exemple de code parce que je sèche là depuis pas mal de temps... merci beaucoup d´avance :)

j´ai réussi à contourner le problème en faisant avec

int integer = 0;

printf ("qui choisissez vous");
scansf("%d",integer);

if (integer == 1/*pour le guerrier par exemple*/)
{
printf("Vous avez choisi machin");
}

et ça continue normalement mais alors là j´ai un autre problème c´est que si le joueur entre des "string" au lieu d´un chiffre ça plante, et la boucle se fait indéfiniment et on peut plus rien taper on reçoit juste le message "qui choisissez vous ?" ...

A noter je suis pas super bon en prog et en plus j´ai arrêter pendant plus d´un an alors boulet inside... :desole:

DrTenma
DrTenma
Niveau 6
25 novembre 2006 à 14:10:06

test=1;
while(test)
{
printf("Choisissez...\n");
scanf("%s",choix); //choix c un char*
if(!strcomp(choix,"guerrier"))
{
printf("ton choix %s",choix);
test=0;
}
}

Si ca peut t´aider.

godrik
godrik
Niveau 30
25 novembre 2006 à 18:44:28

attention, il fallait lire strcmp et non strcomp

Shiba_the_Inu
Shiba_the_Inu
Niveau 85
25 novembre 2006 à 19:26:18

Ah ! Merci beaucoup c´est parfait :-)

Extra-terrestre
Extra-terrestre
Niveau 10
27 novembre 2006 à 19:37:00

Salut,
j´ai une petite question, quand on déclare un booléen, prend t-il comme valeur par defaut false? ou faut-il l´intialiser à chaque fois?
merci d´avance :)

elhuron
elhuron
Niveau 6
27 novembre 2006 à 19:51:44

Je pense que c´est aleatoire.
Mais prends l´habitude d´initialiser a chaque fois :)
Et tu peux faire des tests pour le savoir ! :)

Extra-terrestre
Extra-terrestre
Niveau 10
27 novembre 2006 à 20:09:02

ouais je me disais aussi^^
merci bien :)

godrik
godrik
Niveau 30
27 novembre 2006 à 20:18:15

en C et C++, les types primaires du langage ont une valeur par défaut non spécifié.

Fvirtman
Fvirtman
Niveau 10
27 novembre 2006 à 22:48:40

Ne jamais compter sur les valeurs par defaut !
Sauf, bien sur, en cas de classe dont le constructeur par defaut fait bien son boulot !

Souvent, au boulot, on a des soucis a cause de ça :
en mode debug, on oublie d´initialiser une variable, des fois, y´a pas de warnings, et la : pan ! des qu´on passe en release, ça plante, et pas en debug... pour debugguer ça, quel bonheur :malade:

dnob700
dnob700
Niveau 10
28 novembre 2006 à 14:24:00

[mode troll]

J´ai découvert récemment qu´en Caml tu peut déboguer tes programmes "à l´envers" : tu le lance, ça plante (enfin, c´est rare, le Caml ne plante pas générallement) et là tu lance le débogueur et tu exécute les lignes les unes après les autres, en marche arrière ! depuis le bogue. Et ça marche même en release (les programmes sont plus gros, mais pas plus lent).

C´est l´une des raisons qui font que c´est adopté par l´industrie.

[/troll]

Fvirtman
Fvirtman
Niveau 10
28 novembre 2006 à 14:50:24

Lol ! débugguer les programmes release, dans l´industrie, c´est offrir des cadeaux aux client :lol:

dnob700
dnob700
Niveau 10
28 novembre 2006 à 18:05:16

ce que je voulais dire c´est qu´il n´y a pas de différence entre les bibliothèque utilisée dans les deux cas, et donc qu´il n´y a aucune différence de comportement (comme dans ton exemple).

Fvirtman
Fvirtman
Niveau 10
28 novembre 2006 à 18:11:33

Ah ça, pas de douleur comme ça,
parce que :

baaaaaauuuuuuumme Caml, plus fort que la douleuuur !! !
:dehors:

godrik
godrik
Niveau 30
28 novembre 2006 à 19:00:08

caml c´est bien!

Message a la communauté: Ceci était un post non constructif.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware