Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con classe madre
Forum - C/C++ - Problema con classe madre

Avatar
Tonix90 (Normal User)
Newbie


Messaggi: 1
Iscritto: 18/11/2011

Segnala al moderatore
Postato alle 20:37
Venerdì, 18/11/2011
Salve a tutti, ero già registrato al sito ma purtroppo non riesco a recuperare i dati quindi ho eseguito una nuova registrazione..

Ho scritto un programma che mi simula (in modo molto approssimativo) l'accensione di un computer..

Il programma è tutto scritto bene, infatti mi da solo 1 errore in questo file:

Codice sorgente - presumibilmente C++

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class SCHEDAMADRE: public COMPUTER
  6. {
  7.       private:
  8.                   bool stato;
  9.                   string modello;
  10.       public:
  11.                  SCHEDAMADRE(){modello="ASUS"; stato=false;};
  12.                  ~SCHEDAMADRE(){};
  13.                  virtual void accendi();
  14.                  virtual void spegni();
  15.              bool statoSM();   
  16. };
  17.  
  18.  
  19. class SCHEDAVIDEO: public SCHEDAMADRE
  20. {
  21.       private:
  22.               bool ventola;
  23.                   bool accensione;
  24.                   bool schermo;
  25.                   string modello;
  26.       public:
  27.              SCHEDAVIDEO(){ventola=false; accensione=false; schermo=false; modello="nVidia";};
  28.                  ~SCHEDAVIDEO(){};
  29.                  virtual void accendi();
  30.                  virtual void spegni();
  31. };
  32.  
  33. class PERIFERICHE: public SCHEDAMADRE
  34. {
  35.       private:
  36.                   bool lettore_CD;
  37.                   bool Floppy_Disk;
  38.                   bool USB1;
  39.                   bool USB2;
  40.                   bool USB3;
  41.       public:
  42.                  PERIFERICHE(){lettore_CD=false; Floppy_Disk=false; USB1=false; USB2=false; USB3=false;};
  43.                  ~PERIFERICHE(){};
  44.                  virtual void accendi();
  45.                  virtual void spegni();
  46. };
  47.  
  48. class PROCESSORE: public SCHEDAMADRE
  49. {
  50.       private:
  51.                   bool stato;
  52.                   string modello;
  53.       public:
  54.                  PROCESSORE(){stato=false; modello="Intel Core I5";};
  55.                  ~PROCESSORE(){};
  56.                  virtual void accendi();
  57.                  virtual void spegni();
  58. };
  59.  
  60. class RAM: public SCHEDAMADRE
  61. {
  62.       private:
  63.                   bool stato;
  64.                   string modello;
  65.                   int quantita;
  66.       public:
  67.                  RAM(){stato=false;modello="Kingston"; quantita=4;};
  68.                  ~RAM(){};
  69.                  virtual void accendi();
  70.                  virtual void spegni();
  71. };
  72.  
  73. class AUDIO: public SCHEDAMADRE
  74. {
  75.       private:
  76.               bool stato;
  77.                   string modello;
  78.       public:
  79.                  AUDIO(){stato=false;modello="Sound Blaster";};
  80.                  ~AUDIO(){};
  81.                  virtual void accendi();
  82.                  virtual void spegni();
  83. };
  84.  
  85. class SCHEDADIRETE: public SCHEDAMADRE
  86. {
  87.       private:
  88.                   bool stato;
  89.                   string modello;
  90.                   bool connessione;
  91.       public:
  92.                  SCHEDADIRETE(){stato=false; modello="Broadcom"; connessione=false;};
  93.                  ~SCHEDADIRETE(){};
  94.                  virtual void accendi();
  95.                  virtual void spegni();
  96. };
  97.      
  98. class VENTOLE: public SCHEDAMADRE
  99. {
  100.       private:
  101.              bool ventola1;
  102.              bool ventola2;
  103.              bool ventola3;
  104.       public:
  105.              VENTOLE(){ventola1=false; ventola2=false; ventola3=false;};
  106.              ~VENTOLE(){};
  107.              virtual void accendi();
  108.              virtual void spegni();
  109. };
  110.  
  111. class DISSIPATORE: public SCHEDAMADRE
  112. {
  113.       private:
  114.              bool stato;
  115.       public:
  116.              DISSIPATORE(){stato=false;};
  117.              ~DISSIPATORE(){};
  118.              virtual void accendi();
  119.              virtual void spegni();
  120. };
  121.  
  122. class ALIMENTATORE: public SCHEDAMADRE
  123. {
  124.       private:
  125.              bool stato;
  126.       public:
  127.              ALIMENTATORE(){stato=false;};
  128.              ~ALIMENTATORE(){};
  129.              virtual void accendi();
  130.              virtual void spegni();
  131. };
  132.  
  133. class HARD_DISK: public SCHEDAMADRE
  134. {
  135.       private:
  136.              int quantita;
  137.              bool stato;
  138.       public:
  139.              HARD_DISK(){quantita=500; stato=false;};
  140.              ~HARD_DISK(){};
  141.              virtual void accendi();
  142.              virtual void spegni();
  143. };
  144.  
  145. class COMPUTER
  146. {
  147.       private:
  148.               SCHEDAMADRE schedamadre;
  149.               RAM ram;
  150.               HARD_DISK hard_disk;
  151.               SCHEDAVIDEO schedavideo;
  152.               AUDIO audio;
  153.               VENTOLE ventole;
  154.               ALIMENTATORE alimentatore;
  155.               PROCESSORE cpu;
  156.               DISSIPATORE dissipatore;
  157.               PERIFERICHE periferiche;
  158.               SCHEDADIRETE schedadirete;
  159.       public:
  160.              COMPUTER(){};
  161.              ~COMPUTER(){};
  162.              virtual void accendi();
  163.              virtual void spegni();
  164. };



In pratica, essendo la classe SCHEDAMADRE una classe figlia di COMPUTER, il complilatore mi dice che la classe COMPUTER non è definita (poichè è scritta alla fine del file)..

Se provo a scrivere la classe COMPUTER all'inizio mi da comunque errore poichè gli attributi della classe sono a loro volta degli oggetti e il compilatore quando va a leggere la classe non li trova..

Come posso risolvere?

Grazie per eventuali risposte

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:01
Venerdì, 18/11/2011
Prima di tutto, questo è C++ e non C (quindi hai sbagliato sezione del forum).

Per il problema, non si capisce il perché di tutte quelle strane derivazioni ...
Semmai dovrebbe essere

Codice sorgente - presumibilmente C/C++

  1. class SchedaMadre{};
  2.  
  3. class Computer : private SchedaMadre
  4. {
  5. };



oppure, meglio

Codice sorgente - presumibilmente C/C++

  1. class SchedaMadre{};
  2.  
  3. class Computer
  4. {
  5.   private:
  6.     SchedaMadre mb;
  7. };



Ultima modifica effettuata da nessuno il 18/11/2011 alle 21:02
il problema è che devo usare il polimorfismo per attivare i vari metodi quindi devono essere tutte collegate tra di loro.. - Tonix90 - 18/11/11 21:46
Non hai letto bene quello che ti ho scritto ... - nessuno - 18/11/11 21:57


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM