See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [C++] Déclaration d'un objet de classe dans une classe parente  (Read 3744 times)

0 Members and 1 Guest are viewing this topic.

Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
26 April 2009, 20:38:06
Oui je sais, le titre n'est pas très explicite...

Alors voila: dans mon projet, j'ai pour le moment la classe principale du vaisseau [Vaisseau] , et une classe fille héritant
de la
première [CrewMember]. Mon but, c'est de créer un objet de la classe fille.

Mais ou dois-je le déclarer? Dans la déclaration de la classe mère, ou sont déclarées toutes les autres variables? C'est ce
que j'ai fait jusqu'à maintenant:

Code: [Select]
class Vaisseau
{
private:
        CrewMember Crew;
}

 Et ça marche pas :( -le compilateur m'insulte poliment en me disant qu'il ne reconnait pas CrewMember comme identificateur etc:

Quote
1>Vessel.h(21) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'crew'
1>Vessel.h(21) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas
en charge int par défaut

Est-ce que quelqu'un aurait une idée là-dessus? Merci d'avance.


@++

MSL  


Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #1 - 26 April 2009, 22:44:40
tiens ça me rappelle en Septembre 86 au début de ma classe de terminale quand j'avais fait ma déclaration à Sophie
Bitton, via un petit compliment écrit sur un papier.



( je suis déjà dehors )



Message modifié ( 27-04-2009 11:53 )


Offline Fast_toche

  • Legend
  • ******
  • Posts: 1330
  • Country: France fr
  • Karma: 35
  • Time is nothing...
Reply #2 - 26 April 2009, 23:27:05
Là t"est duuuuur CS;)



Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #3 - 27 April 2009, 02:33:53
Chalut m'sieu,

Quote
spécificateur de type manquant

La il te dis qu'il ne reconnait pas "CrewMember" comme un type ou une classe déclarée. En bref il manque une
déclaration quelque part. Elle est peut être pas dans le "scope"

Ou est défini le type "CrewMember" ?

Il doit etre soit dans un include "#include " plus haut que ta classe "Vaisseau" soit défini dans le meme "h" que la
classe vessel mais plus haut.

Si ca marche pas montre du code je te dirais.

A++

Dan


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #4 - 30 April 2009, 17:56:56
Justement, je me demandais ou la déclarer (CrewMember étant une sous-classe de Vaisseau).
Je lis partout qu'il faut le faire dans le main(), mais comme dans notre cas y en a pas...


@++

MSL  


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #5 - 01 May 2009, 03:59:29
mmmhhh t'est spartiate dans les infos...

bon... Dans un header.h tu dois avoir déclaré ta classe non ?

genre:

Code: [Select]
//header.h... declaration de classe crewmember

class CrewMember()
{
   public:

 private:
}

Pour que l'autre aie connaissance de cette classe il suffi d'inclure ce header:

Code: [Select]
#include "header.h"

class Vaisseau
{
private:
        CrewMember Crew;
}

A++

Dan


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #6 - 01 May 2009, 16:22:03
Je sais, mais je veux pas encore mettre le nom du projet en public, c'est pas assez avancé...
Alors voici un peu plus de code:

MonMFD.h:
Code: [Select]
#ifndef __MONMFD_H
#define __MONMFD_H

#include <string>
#include "Orbitersdk.h"

class MonMFD : public MFD
{
public:
MonMFD (DWORD w, DWORD h, VESSEL *vessel);
~MonMFD ();

private:
CrewMember Crew;
};

#endif
 

MonMFD.cpp:
Code: [Select]
#define STRICT
#define ORBITER_MODULE

#include "MonMFD.h"

Mon::MonMFD (DWORD w, DWORD h, VESSEL *vessel): MFD (w, h, vessel)
{
//MFD initialisation
}

MonMFD::~MonMFD ()
{
//MFD cleanup
}

CrewMember.h:
Code: [Select]
#ifndef __CREWMEMBER_H
#define __CREWMEMBER_H
 
#include <string>
#include "MonMFD.h"

using namespace std;
 
class CrewMember : private MonMFD
{
public:
CrewMember (DWORD w, DWORD h, VESSEL *vessel);
~CrewMember ();

                enum FUNCTION {CMDR, PLT, MSSP, PSGR};
enum GENDER {MALE, FEMALE};

string getSurname ();
string getName ();
string getNationality ();
unsigned int getAge ();
unsigned int getWeight ();
float getHeartActivityBPM ();
float getBodyTempC ();
FUNCTION getFunction ();
GENDER getGender ();

void setSurname (string);
void setName (string);
void setNationality (string);
void setAge (unsigned int);
void setWeight (unsigned int);
void setHeartActivityBPM (float);
void setBodyTempC (float);
void setFunction (FUNCTION);
void setGender (GENDER);


private:
string  sSurname;
string  sName;
string  sNationality;
unsigned int uiAge;
unsigned int uiWeight;
float uiHeartActivityBPM;
float BodyTempC;

FUNCTION function;
GENDER gender;
};
#endif

Et enfin CrewMember.cpp:
Code: [Select]
#include <string>
#include "CrewMember.h"

CrewMember::CrewMember (DWORD w, DWORD h, VESSEL *vessel) : MonMFD (w, h, vessel)
{
         //Initialisation
}


CrewMember::~CrewMember ()
{
//Cleanup
}

Certaines fonctions ne font encore pas grand chose, mais ce n'est que temporaire ;)

Merci pour avoir pris le temps de regarder ceci!


@++

MSL  


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #7 - 11 May 2009, 17:15:09
Quelqu'un aurait-il une idée?? Par-ce que je vais vous avouer que je suis un peu perdu là-dedant :wonder:


@++

MSL  


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #8 - 12 May 2009, 01:06:36
En 414 ans t'aurais quand même pu apprendre le C++ nondidiou !? :badsmile: (private joke)

je... comme ca à blanc sans les outils de vc pour une vision clair c'est un peu prise de tête, (j'ai la flemme de reflechir) tu pourrais m'envoyer les sources et le projet ? je regle en 5mn et t'envoie (ou post ici) la soluce.

A peluche,

Dan



Message modifié ( 12-05-2009 01:10 )


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #9 - 23 May 2009, 19:58:53
visiblement il manque jsute
Quote
#include "cremember.h"

dans Vaisseau.h

bonne chance


« Last Edit: 23 May 2009, 19:58:53 by tofitouf »
---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus