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

C++

stormseedle
stormseedle
Niveau 8
08 mai 2005 à 15:27:53

J´ai une erreur que je ne comprend pas en C++ lors de la compiltation de mon programme je vais vous donner tous les elements :
objet.hpp
typedef struct
{
unsigned int x,y;
}cple;

class Objet
{
cple c;

public :
Objet();
~Objet();

void setPosition(int x,int y);
cple getPosition(void) const;
};

mur.hpp

  1. ifndef _mur_h
  2. define _mur_h
  3. include " objet.hpp"

class Mur : public Objet
{
public :
char getSymbole();
bool getEcrasable() const;
};

  1. endif

simulateur.hpp

  1. ifndef _simulateur_h
  2. define _simulateur_h
  3. include " mur.hpp"
  4. include < iostream>

using namespace std;

class Simulateur
{
Objet *tab[10][10];

public :
Simulateur();
~Simulateur();
void afficheDamier() const;
};

  1. endif

et voila les cpp :
simulateur.cpp

  1. include " simulateur.hpp"

Simulateur:: Simulateur()
{

cout < <"creation d´un damier"<<endl;
for ( int i=0; i<10; i++)
{
for ( int j=0; j<10; j++)
{
tab[i][j]= new Mur;
}
}
};

void Simulateur:: afficheDamier() const
{
for ( int i=0;i<10;i++)
{
for ( int j=0;j<10;j++)
cout < <" " <<tab[i][j].getSymbole()<<" " ;
cout < <endl;
}
};

mur.cpp

  1. include " mur.hpp"

char Mur:: getSymbole()
{
return ´M´;
};

bool Mur:: getEcrasable() const
{
return 0;
};

  1. include " objet.hpp"

void Objet:: setPosition(int x, int y)
{
c.x=x;
c.y=y;
};

cple Objet:: getPosition(void) const
{
return c;
};

et enfin mon code de test

  1. include " simulateur.hpp"

void test(void)
{
Simlateur S;
S.afficheDamir;
}

int main(void)
{
test();
}

voila je compile ac G++ 3.3 t voila l´erreur que cela me donne :
simulateur.cpp:21: error: request for member `getSymbole´ in `
this->Simulateur::tab[i][j]´, which is of non-aggregate type `Objet* const´
make: *** [simulateur.o] Erreur 1
make: Warning: File `objet.o´ has modification time 6,4e+03 s in the future
make: La cible all n´a pas pu tre refabrique cause d´erreurs.
make: AVERTISSEMENT: changement d´horloge dtect. La construction peut tre incomplte.

Compilation exited abnormally with code 2 at Sun May 8 15:26:27

si qqun peut m´aider je suis preneur

dnob700
dnob700
Niveau 10
08 mai 2005 à 15:32:45

là prochaine fois mets ton code sur un wall ( par exemple là : http://walljv.free.fr/ ) pour que ça soit plus lisible.

sinon essaye de mettre ( tab[i][j]).getSymbole il y a peut-être un problème de priorité.

et juste un conseil, n´utilise pas :
typedef struct
{
unsigned int x,y;
}cple;

mais plutot
struct cple
{
unsigned int x,y;
};

c´est plus propre quand même.

stormseedle
stormseedle
Niveau 8
08 mai 2005 à 15:35:31

Merci j´utilise juste typedef struct pr eviter de faire juste apres un typedef struc cple cple, c moins chiant

stormseedle
stormseedle
Niveau 8
08 mai 2005 à 15:37:03

Dsl mais visiblement xemacs ne passe pas les indentations ici, je suis dsl lol. enfin ta solution ne fonctionne pas j´avais en fait deja essaye au debut :´(

stormseedle
stormseedle
Niveau 8
08 mai 2005 à 16:54:33

J´ai mis un point au lieu d´une fleche pr ceux qui cherche le bug c pas plus dur que ca

dnob700
dnob700
Niveau 10
08 mai 2005 à 18:55:59

ah oui j´ai pas fait gaffe que c´était un
objet *tab[10][10];//pas fait gaffe à l´*

mais c´est bizarre, tu le déclare objet et tu l´initialise Mur, c´est pas très propre.

Sinon, tu saistu peut faire :

struct cple
{
int a,b,c
};

puis plus loin :
cple bonjour;

tu fait du C++ pas du C donc pas besoin du mots clefs struct pour déclarer des variables, c´est donc plus propre.

lag-it
lag-it
Niveau 10
10 mai 2005 à 17:51:30

De toutes facons en C, il est souvent plus pratique d´avoir recours à typedef :

struct st_MaStructure
{
   // ...
};

typedef st_MaStructure MaStructure;

Ou :

typedef struct / *st_MaStructure*/
{
   // ...
} MaStructure;

MrGoTo
MrGoTo
Niveau 8
10 mai 2005 à 18:26:11

Oui mais pas en C++ car struct est considéré comme un type de base.

lag-it
lag-it
Niveau 10
10 mai 2005 à 19:38:25

C´est pour ca que j´ai précisé en C.

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