C++ SFML : Spécificateur de Substitution Inconnu
Faydhax
-
Faydhax -
Faydhax -
Bonjour,
je programme un jeu de platform.
Dans ce jeu j'ai donc 5 plateformes, elles sont déclarées par une structure et initialisées par une fonction. Le tout dans le main.h et main.cpp .
J'utilise la class sf::RectangleShape de SFML mais le compilateur me met cette erreur :
Gravité : Erreur
Code : C3646
Description : 'platform_rect' : spécificateur de substitution inconnu
Fichier : Main.h
Ligne : 15
Ma structure "Platform" :
Ma création d'un pointeur sur un tableau de Platform
Ma fonction "PlatformCreate" (dans main.cpp) :
Dernière chose :
Cette erreur engendre une autre erreur (enfin je pense que ça vient de ça) :
Descripition : spécificateur de type manquant - int est pris en compte par défaut.
Remarque : C++ ne prend pas en charge int par défaut.
Ligne : 15
Voilà, je suis encore très débutant, désolé si le programme n'est pas très propre...
Merci d'avance !!
je programme un jeu de platform.
Dans ce jeu j'ai donc 5 plateformes, elles sont déclarées par une structure et initialisées par une fonction. Le tout dans le main.h et main.cpp .
J'utilise la class sf::RectangleShape de SFML mais le compilateur me met cette erreur :
Gravité : Erreur
Code : C3646
Description : 'platform_rect' : spécificateur de substitution inconnu
Fichier : Main.h
Ligne : 15
Ma structure "Platform" :
struct Platform { RectangleShape platform_rect; // <-- La ligne 15 int posX; int posY; int width; int height; void RandomPosition(); };
Ma création d'un pointeur sur un tableau de Platform
Platform* platforms = new Platform[5];
Ma fonction "PlatformCreate" (dans main.cpp) :
void PlatformCreate(Platform* platforms) { for (int i = 0; i < 5; i++) { platforms[i].width = 100; platforms[i].height= 25; platforms[i].platform_rect = RectangleShape(Vector2f(platforms[i].width, platforms[i].height)); } }
Dernière chose :
Cette erreur engendre une autre erreur (enfin je pense que ça vient de ça) :
Descripition : spécificateur de type manquant - int est pris en compte par défaut.
Remarque : C++ ne prend pas en charge int par défaut.
Ligne : 15
Voilà, je suis encore très débutant, désolé si le programme n'est pas très propre...
Merci d'avance !!
Configuration: Windo</code>ws / Firefox 100.0
6 réponses
Bonjour,
Le compilateur ne semble savoir ce qu'est
Peut-être manque-t-il l'
Le compilateur ne semble savoir ce qu'est
RectangleShaped'où les 2 erreurs sur cette ligne.
Peut-être manque-t-il l'
includequi apporte la définition de
RectangleShapeavant ta définition de la
struct Platform.
J'utilise déjà
Si l'include dont tu parle est
dans le main.cpp, il y est bien.
J'ai aussi fait le
pour associer le répertoire de ma librairie où se situe sf:: RectangleShape
C'est pour ça que je comprend pas, le programme semble bon... Je suis sur VC++ 2022 si ça peut être utile.
RetangleShapea d'autres endroits de mon programme et il marche très bien...
Si l'include dont tu parle est
#include "Main.h"
dans le main.cpp, il y est bien.
J'ai aussi fait le
#include "SFML-graphics.h"
pour associer le répertoire de ma librairie où se situe sf:: RectangleShape
C'est pour ça que je comprend pas, le programme semble bon... Je suis sur VC++ 2022 si ça peut être utile.
Si le type
RectangleShapeest bien visible, c'est que son nom est incomplet, il fait écrire
sf::RectangleShapeau lieu de
RectangleShape.
L'erreur est résolue, merci beaucoup !
Mais j'ai une autre erreur dans le programme du même genre :
J'ai une fonction GroundDetect qui prend en parrametre mon pointeur sur des platformes.
La définition :
Et j'ai une erreur dans la déclaration :
Gravité : Erreur
Code : C2061
Description : erreur de syntaxe : identificateur 'Platform'
Ligne : 47
J'en ai conclu que Platform n'était pas détecté en tant que structure mais :
- J'ai bien mis l'include
- J'ai bien orthographié Platform
Je sais pas quoi faire avec ce programme XD
Mais j'ai une autre erreur dans le programme du même genre :
J'ai une fonction GroundDetect qui prend en parrametre mon pointeur sur des platformes.
La définition :
bool Block::GroundDetect(Platform* platforms) { if (Y_block > WIN_HEIGHT - blockSize) { return true; } else { return false; } for (int i = 0; i < 5; i++) { if (Y_block + blockSize == platforms[i].posY && X_block + blockSize > platforms[i].posX && X_block < platforms[i].posX + platforms[i].width) { return true; } else { return false; } } }
Et j'ai une erreur dans la déclaration :
bool GroundDetect(Platform* platform);L.47
Gravité : Erreur
Code : C2061
Description : erreur de syntaxe : identificateur 'Platform'
Ligne : 47
J'en ai conclu que Platform n'était pas détecté en tant que structure mais :
- J'ai bien mis l'include
main.h
- J'ai bien orthographié Platform
Je sais pas quoi faire avec ce programme XD
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Exactement, la même réponse que pour .
Le compilateur ne semble savoir ce qu'est
Peut-être manque-t-il l'
PS: Et ma boule de cristal étant en réparation, je n'ai toujours aucune idée du fichier d'entête où tu as défini
RectangleShape:
Le compilateur ne semble savoir ce qu'est
Platformd'où ton erreur sur cette ligne.
Peut-être manque-t-il l'
includequi apporte la définition de
struct Platformavant ta définition de la
bool Block::GroundDetect(Platform* platforms).
PS: Et ma boule de cristal étant en réparation, je n'ai toujours aucune idée du fichier d'entête où tu as défini
struct Platform, est-ce dans ce main.h ? Je ne sais pas!
XD
Pardon, je pensais que tu te souviendrais tu premier post ou j'ai précisé que ma structure faisait partie de main.h
Enfin ducoup j'ai vérifié et l'include est bien mise sur le fichier de la déclaration et de la définition de
J'ai testé encore une fois et l'erreur n'a pas disparue miraculeusement !
Pour un récap : La structure est déclaré dans le main.h, ainsi que mon pointeur
Je les inclue donc sur block.h (déclartion de GroundDetect)
ET sur block.cpp (définition de GroundDetect) .
PS : Block est une classe pour le personnage de mon jeu de plateforme.
Pardon, je pensais que tu te souviendrais tu premier post ou j'ai précisé que ma structure faisait partie de main.h
Enfin ducoup j'ai vérifié et l'include est bien mise sur le fichier de la déclaration et de la définition de
Block::GroundDetect.
J'ai testé encore une fois et l'erreur n'a pas disparue miraculeusement !
Pour un récap : La structure est déclaré dans le main.h, ainsi que mon pointeur
Platform* platforms;
Je les inclue donc sur block.h (déclartion de GroundDetect)
ET sur block.cpp (définition de GroundDetect) .
PS : Block est une classe pour le personnage de mon jeu de plateforme.