Probleme declaration de int C++

Résolu/Fermé
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021 - 7 juil. 2016 à 15:46
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021 - 7 juil. 2016 à 22:21
bonjour,
je suis en train de programmer en c++ et j'ai une erreur dans un .h,
j'ai declaré des variabless int de cette façon "int maVar (40);"
et a la compilation, codeblock me retourne les erreurs
"error: expected identifier before numeric constant"
"error: expected ',' or '...' before numeric constant"

avez vous une idée de où pourrait venir ce problème?
merci

1 réponse

GlanVonBrylan Messages postés 11 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 7 juillet 2016
7 juil. 2016 à 15:49
Tu pourrais nous donner le code complet de ton .h ?
0
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
7 juil. 2016 à 15:55
merci pour cette réponse aussi rapide voila le code complet
#ifndef MAP_H_INCLUDED
#define MAP_H_INCLUDED

#include <SFML/Graphics.hpp>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>


class Map
{
public:
//Constructeur
Map();

//Fonctions
void loadMap(std::string mapFilePath);
void draw(std::string mapFolder, sf::RenderWindow &window);

private:

//Background
sf::Texture backgroundTexture;
sf::Sprite background;

//Tilesets
sf::Texture tileSet1Texture;
sf::Sprite tileSet1;

//Variables
int const windowTileX (40);
int const windowTileY (20);
int const tileSize (32);
int const SCREEN_WIDTH (windowTileX*tileSize), SCREEN_HEIGHT (windowTileY*tileSize);

int const maxMapSizeX (500), maxMapSizeY (200);
int startX, startY;
int maxX, maxY;
std::vector < std::vector < int > > tile;
#endif
0
GlanVonBrylan Messages postés 11 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 7 juillet 2016 > alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
Modifié par GlanVonBrylan le 7/07/2016 à 19:18
Ceci dit, à la réflexion, si quelque chose d'aussi simple que ça te pose problème, tu ne devrais pas déjà te lancer dans la SFML.

Apprends déjà le C++ en tant que tel (ne serais-ce qu'avec le tuto d'Open Classrooms, c'est comme ça que j'ai fait, moi), et ensuite lance-toi dans la SFML.
0
GlanVonBrylan Messages postés 11 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 7 juillet 2016
7 juil. 2016 à 19:16
C'est bien ce qui me semblait. Tu ne peux pas initialiser des attributs au niveau de leur déclaration, même s'ils sont constants ; tu dois le faire dans la liste d'initialisation de ton constructeur.
Donc ton constructeur (défini dans map.cpp, je suppose) sera un truc du genre :

Map::Map() : maxMapSize(500), maxMapSizeY(200)
// Tu peux initialiser tes autres attributs dans la liste d'initialisation, c'est pas obligatoire mais conseillé
{
// autre opérations que tu pourrais vouloir mettre dans le constructeur
}


Cependant, si ces limitations de taille sont valable pour TOUTES les maps, je te suggère plutôt des constantes statiques, que tu pourras alors initialiser au niveau de leur déclaration.

En résumé, je te suggère plutôt de mettre le mot-clé static devant int const

Je dirais pour finir que, pour des raisons de sémantique, il est préférable d'initialiser les types primitifs avec un = plutôt que des parenthèses.
0
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
7 juil. 2016 à 22:21
merci
ça fonctionne maintenant,
bonne soirée.
0