Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
757 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Problème de classes

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Problème de classes

n°354160
Alload
Posté le 06-04-2003 à 21:25:37  profilanswer
 

J'aimerais déclarer une classe principale dont les fonctions restent à être déclarer dans des classes annexes dérivant de la principale (ça s'appelle du polymorphisme, c'est ça?).
 
Le problème c'est que ça me donne des "unresolved external symbol" pour chaque fonction de la classe principale.
 
Voilà comment je la déclare:
 

Code :
  1. class CMaterial
  2. {
  3. public:
  4. CMaterial() {};
  5. ~CMaterial() {};
  6. virtual void SetAngles(float start, float stop);
  7. virtual void Process();
  8. virtual void PresentSceneImage(HWND hwnd);
  9. virtual void InitScene(float angle);
  10. virtual void AddParticles(int position, int numberofparticles);
  11. virtual void AddParticlesWithMouse(int mousex, int numberofparticles);
  12. virtual long ProcessMessage(HWND hWnd, UINT message, UINT wParam, long lParam);
  13. };


 
Puis les autres je fais simplement:

Code :
  1. class CMaterial2D : public CMaterial
  2. {
  3. je déclarer les fonctions virtual de CMaterial plus d'autres fonctions
  4. };


 
Voilà, je comprend pas pourquoi ça ne marche pas.
Merci!


Message édité par Alload le 06-04-2003 à 21:26:07
mood
Publicité
Posté le 06-04-2003 à 21:25:37  profilanswer
 

n°354163
chrisbk
-
Posté le 06-04-2003 à 21:27:45  profilanswer
 

toute les fonctions virtuelles doivent etre implantés, a l'exception des virtuelles pures (ce que tu veux faire ici)
 
 

Code :
  1. virtual void SetAngles(float start, float stop)=0;
  2. virtual void Process()=0;
  3. virtual void PresentSceneImage(HWND hwnd)=0;
  4. virtual void InitScene(float angle)=0;
  5. ...


attention une classe contenant des virtuelles pure ne peut plus etre instancié

n°354169
Alload
Posté le 06-04-2003 à 21:36:21  profilanswer
 

Oki je teste, sinon ça veut dire quoi instanciée?

n°354170
chrisbk
-
Posté le 06-04-2003 à 21:38:59  profilanswer
 


Code :
  1. class tagada
  2. {
  3. ...
  4. };
  5. tagada machin; //instanciation d'un objet de type tagada

n°354171
theshockwa​ve
I work at a firm named Koslow
Posté le 06-04-2003 à 21:39:39  profilanswer
 

Instancier, c'est créer un objet du type de ta classe (c'est clair, ce que je viens de dire :heink: ?)
 


---------------
last.fm
n°354173
Alload
Posté le 06-04-2003 à 21:40:44  profilanswer
 

Ah merde, comme on peut plus les instanciée je peux pas faire ce que je voulais...
 
En fait je désirais déclarer un classe globale puis l'initialiser avec un des variantes des classes annexes:
 

Code :
  1. CMaterial *g_pMat;
  2. void main()
  3. {
  4. g_pMat = new CMaterial2D();
  5. }


 
Y a-t-il un moyen de faire cela?

n°354174
chrisbk
-
Posté le 06-04-2003 à 21:41:32  profilanswer
 

un pointeur sur classe n'est pas une instance de cette classe, donc oui tu peux :O

n°354221
Taz
bisounours-codeur
Posté le 06-04-2003 à 22:51:57  profilanswer
 

et le destructeur virtuel s'il te plait. c'est la première chose à faire quand on fait de l'héritage et du polymorphisme

n°355156
Alload
Posté le 07-04-2003 à 19:26:29  profilanswer
 

Ca marche pas le:

Code :
  1. CMaterial *pMat;
  2. int main()
  3. {
  4. pMat = new CMaterial3D(..);
  5. ...
  6. };


 
Le compilo me dit qu'on ne peut pas instancier une classe abstraite.

n°355160
chrisbk
-
Posté le 07-04-2003 à 19:29:49  profilanswer
 

Alload a écrit :

Ca marche pas le:

Code :
  1. CMaterial *pMat;
  2. int main()
  3. {
  4. pMat = new CMaterial3D(..);
  5. ...
  6. };


 
Le compilo me dit qu'on ne peut pas instancier une classe abstraite.


 
tu dois redefinir toute les fonctions virtuelles pure dans mat3d


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Problème de classes

 

Sujets relatifs
problème CSS[HTML] Où est le problème? Il veut pas s'aligner come il faut! :(
Probleme MySQL et connexion distante[HTML compliant] skoi le problème avec mon <head> ?
[c++] problème avec ifstream et fonction getline[PERL] Problême de data sharing entre plusieurs threads...
SQL Server : récupérer les enregistrements n à m, problèmeProblème en programant un Batch, aidez-moi svp...
Problème comportement chkbox perso / checkbox d'origine[script ksh] probleme variable dans awk
Plus de sujets relatifs à : [C++] Problème de classes


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR