Probleme declaration de int C++
Résolu
alex012
Messages postés
103
Statut
Membre
-
alex012 Messages postés 103 Statut Membre -
alex012 Messages postés 103 Statut Membre -
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
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
-
-
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 -
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. -
-