Erreur sur l'utilisation d'une classe [Résolu]

Signaler
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008
-
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008
-
Bonjour,je suis débutant en C++,et j'ai un problème quand j'appelle une classe .
Je travaille sur VisualC++ 2005.
Quand je fais un Tab[j]  le logiciel sais  que c'est une classe Station et me donne toute les méthodes associés.


Pouvez vous m'aidez ?
 

void Aze::Choix(std::vector<Station>& Tab,int s)
{
 std::vector<Station> Traitement,Tab_Sans_Traitement;
 for(int i=0;i<6;i++) {
  for(unsigned j=0;j<Tab.size();j++) {
   Commande c=Tab[j].getCommande();                     //mon erreur
   if(c.getG(i)==0) {
    fusion1(Traitement,Tab[j]);
    CalculeTempsSansTraitement(Traitement);
   }
   else {
    fusion1 (Tab_Sans_Traitement,Tab[j]);
    CalculeTempsTraitement(Tab_Sans_Traitement);
   }
  }
 }
}

Je vous donne la classe Station

class Station
{
private: 
 double _temps;
 Commande _com;


public:
 Station();
 Station(double& t,Commande& c);
 Commande& getCommande();
 double getemps();
 void SetCommande(Commande& c);
 void Setemps(double& nb);
};

Voici mon erreur
error C2027: use of undefined type 'Station'
error C2228: left of '.getCommande' must have class/struct/union

12 réponses

Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

ok merci
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
salut,

il manque pas un include, une lib, une définition ?

Loki
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

Désolé j'ai oublié de mettre les include
Je prends qu'une partie de mon programme: c'est toujours la même faute

#include "stdafx.h"
#include
#include <vector>
#include "test4.h"
#include "test3.h"
#include "test.h"
using namespace std;
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

test3.h          //c'est là ou je défini ma classe Station
test2.h          //c'est une classe comprenant une liste de Commande
test.h            //c'est une classe Commande
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
en fait je te demandais surtout de vérifier que tu avais bien inclus tout ce qu'il fallait pour que ton objet soit bien reconnu. il arrive qu'il soit détecté car déclaré, mais pas compilé car non défini.

Loki
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

il me met          see declaration of Station
et                     'Station' : 'class' type redefinition

pourtant j'ai crée une seul fois la classe Station

Je vous met la classe

#include "stdafx.h"
#include
#include "test.h"
#include "test3.h"


using namespace std;


Station::Station()
{
 _temps=0;
 for(int i=0;i<6;i++) {
  _com.SetG(i,0);                  //G étant un tableau avec 6 entiers
 }
}


Station::Station(double& t,Commande& c)
{
 _temps=t;
 _com=c;                           //dans Commande on défini les 6entiers dans le Tableau G
}


Commande& Station::getCommande()
{
 return _com;
}


double Station::getemps()
{
 return _temps;
}


void Station::SetCommande(Commande& c)
{
 _com=c;
}


void Station::Setemps(double& nb)
{
 _temps=nb;
}
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

Apparamment c'est bien ce problème il n'a pas été défini ou mal.
Mais je sais pas comment corriger le problème
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

Je vais regarder sur les cours
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
type redefinition = appel multiple du fichier de définition de la classe

pour corriger, mets en haut de ton fichier :

    #ifndef LENOMQUETUVEUX
    #define LENOMQUETUVEUX

    [ici ton code...]

    #endif

Loki
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

je suis trop débile.


j'avais fait

#ifndef _Station_
#define _Station

#ifndef _Station_
#define _Station

au lieu de

#ifndef _Station_
#define _Station_

Merci à toi Loki6 je t'oublierai jamais
Messages postés
34
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
7 février 2008

Au fait on fait comment pour dire que le problème est résolu?
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
tu acceptes une réponse, y a des boutons sur chaque message.

Loki