No matching function for call, language C
Résolu
pandageek
Messages postés
379
Statut
Membre
-
pandageek Messages postés 379 Statut Membre -
pandageek Messages postés 379 Statut Membre -
Bonjour,
Je débute en C et je me lance dans la programmation d'un petit jeu de combat simple. Seulement, dès le début je bloque.
je suis en train de faire le systeme d'attaque.
J'ai une structure Personnage et une Objet que je déclare sans problèmes mais que je ne peux pas manipuler.
main.cpp :
structures.h :
GCC renvoie :
Je ne comprend pas l'erreur et toutes mes recherches m'ont amenée vers du C++ que je ne comprend pas.
ps : mon fichier main a une extension cpp mais c'est parce que j'ai fais un projet SDL.
Je débute en C et je me lance dans la programmation d'un petit jeu de combat simple. Seulement, dès le début je bloque.
je suis en train de faire le systeme d'attaque.
J'ai une structure Personnage et une Objet que je déclare sans problèmes mais que je ne peux pas manipuler.
main.cpp :
#include "structures.h" char attaque(Personnage *attaquant, Personnage *victime, Objet *arme); int main() { //armes Objet katana (20, 0, 40, 1, 0, 1, 0); printf("Jeu\n"); Personnage heros(100, 5, 3, 0); //pv, attaque, def, effect Personnage ennemi(100, 4, 4, 0); attaque (&heros, &ennemi, &katana); return 1; } char attaque(Personnage *attaquant, Personnage *victime, Objet *arme) { char dommages = attaquant->attack + arme->degats - victime->defense; if(dommages <= 0) { dommages = 0; } victime->vie =- dommages; printf("l'attaqué perd %d points de vie, il lui en reste %d", dommages, victime->vie); return 1; }
structures.h :
typedef struct Personnage Personnage; struct Personnage { char vie; char attack; char defense; char effect; }; typedef struct Objet Objet; struct Objet { char degats; char splash; char critique; char effect; char frequence; char portee; char transperce; };
GCC renvoie :
/home/adrian/Documents/c/pdw/main.cpp||In function 'int main()':| /home/adrian/Documents/c/pdw/main.cpp|16|erreur: no matching function for call to 'Objet::Objet(int, int, int, int, int, int, int)'| /home/adrian/Documents/c/pdw/main.cpp|16|note: candidates are:| /home/adrian/Documents/c/pdw/structures.h|12|note: Objet::Objet()| /home/adrian/Documents/c/pdw/structures.h|12|note: candidate expects 0 arguments, 7 provided| /home/adrian/Documents/c/pdw/structures.h|12|note: Objet::Objet(const Objet&)| /home/adrian/Documents/c/pdw/structures.h|12|note: candidate expects 1 argument, 7 provided| /home/adrian/Documents/c/pdw/main.cpp|29|erreur: no matching function for call to 'Personnage::Personnage(int, int, int, int)'| /home/adrian/Documents/c/pdw/main.cpp|29|note: candidates are:| /home/adrian/Documents/c/pdw/structures.h|2|note: Personnage::Personnage()| /home/adrian/Documents/c/pdw/structures.h|2|note: candidate expects 0 arguments, 4 provided| /home/adrian/Documents/c/pdw/structures.h|2|note: Personnage::Personnage(const Personnage&)| /home/adrian/Documents/c/pdw/structures.h|2|note: candidate expects 1 argument, 4 provided| /home/adrian/Documents/c/pdw/main.cpp|30|erreur: no matching function for call to 'Personnage::Personnage(int, int, int, int)'| /home/adrian/Documents/c/pdw/main.cpp|30|note: candidates are:| /home/adrian/Documents/c/pdw/structures.h|2|note: Personnage::Personnage()| /home/adrian/Documents/c/pdw/structures.h|2|note: candidate expects 0 arguments, 4 provided| /home/adrian/Documents/c/pdw/structures.h|2|note: Personnage::Personnage(const Personnage&)| /home/adrian/Documents/c/pdw/structures.h|2|note: candidate expects 1 argument, 4 provided| ||=== Build finished: 18 errors, 0 warnings ===|
Je ne comprend pas l'erreur et toutes mes recherches m'ont amenée vers du C++ que je ne comprend pas.
ps : mon fichier main a une extension cpp mais c'est parce que j'ai fais un projet SDL.
A voir également:
- No matching function for call, language C
- Downloader for pc - Télécharger - Téléchargement & Transfert
- No signal tv - Guide
- Idm for mac - Télécharger - Téléchargement & Transfert
- No video input ✓ - Forum Matériel & Système
- Instagram for pc - Télécharger - Divers Communication
3 réponses
Bonjour,
Ton fichier est en cpp, tu programmes façon C++ et tu utilises gcc.
Cherche l'intrus ^^.
Vu que tu souhaites programmer en C :
Objet katana (20, 0, 40, 1, 0, 1, 0);
Cela n'est pas du C. En C, cela donnerait : Objet katana = {20, 0, 40, 1, 0, 1, 0};
Cette remarque s'applique aux cas similaires.
Remarque : pourquoi ne pas le faire en C++ ? Main() renvoie 0 à la fin, pas 1.
Ton fichier est en cpp, tu programmes façon C++ et tu utilises gcc.
Cherche l'intrus ^^.
Vu que tu souhaites programmer en C :
Objet katana (20, 0, 40, 1, 0, 1, 0);
Cela n'est pas du C. En C, cela donnerait : Objet katana = {20, 0, 40, 1, 0, 1, 0};
Cette remarque s'applique aux cas similaires.
Remarque : pourquoi ne pas le faire en C++ ? Main() renvoie 0 à la fin, pas 1.
Salut,
Je connaît pas vraiment le C mais il n'y a pas de constructeur pour Personnage ou Objet, tu es sur que tu peux instancier tes structures de cette façon ?
Je connaît pas vraiment le C mais il n'y a pas de constructeur pour Personnage ou Objet, tu es sur que tu peux instancier tes structures de cette façon ?
j'ai mis des accolades à la place des parenthèses et le code fonctionne à présent.
fiddy, quel est l'intrus dont tu parle exactement?
fiddy, quel est l'intrus dont tu parle exactement?
non justement je fais du c
Beh, tu fais du C++ sans le savoir : Objet katana (20, 0, 40, 1, 0, 1, 0); et tout ça, c'est du C++, pas du C ^^
C'est pour ça que j'ai traduit ton chinois en japonais (={...}) pour que gcc comprenne.
En changeant cpp en c, je ne sais pas. Mais ce qui est sûr c'est que les erreurs ci-dessus seraient également remontées.
Beh, tu fais du C++ sans le savoir : Objet katana (20, 0, 40, 1, 0, 1, 0); et tout ça, c'est du C++, pas du C ^^
C'est pour ça que j'ai traduit ton chinois en japonais (={...}) pour que gcc comprenne.
En changeant cpp en c, je ne sais pas. Mais ce qui est sûr c'est que les erreurs ci-dessus seraient également remontées.