Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - File header
Forum - C/C++ - File header

Avatar
streghetta (Normal User)
Newbie


Messaggi: 20
Iscritto: 19/02/2010

Segnala al moderatore
Postato alle 3:12
Giovedì, 25/02/2010
Apro un nuovo topic e riprendo il programma postato da Xaratroom per chiedervi una cosa:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Operazione
  5. {
  6.     private:
  7.         int x;
  8.         int y;
  9.         char operatore;
  10.  
  11.         int addizione ();
  12.         int sottrazione ();
  13.     public:
  14.         Operazione ();
  15.  
  16.         int risultato ();
  17.  
  18.         void setx (int a);
  19.         void sety (int b);
  20.         bool setOperazione (char operazione);
  21.         bool setAll (int a, char op, int b);
  22. };
  23.  
  24. int main() {
  25.     bool controllo = false;
  26.  
  27.     while (!controllo) {
  28.         char operatore;
  29.         int a, b;
  30.         Operazione op;
  31.         cout << "Insere il calcolo da eseguire nella forma <primo numero> <operatore> <secondo numero>\n>> ";
  32.         cin >> a >> operatore >> b;
  33.         if (!op.setAll (a, operatore, b)) {
  34.             cout << "Errore di lettura!!!\n";
  35.             continue;
  36.         }
  37.         cout <<"Risultato: " << op.risultato() << endl;
  38.         cout <<"Voui eseguire altre operazioni?" << endl;
  39.         cout <<"Premi 0 per continuare, qualsiasi altro numero per uscire!" << endl;
  40.         cin >> controllo;
  41.     }
  42.     return 0;
  43. }
  44.  
  45. Operazione::Operazione() {
  46.     x = y = 0;
  47. }
  48.  
  49. int Operazione::addizione() {
  50.     return (x + y);
  51. }
  52.  
  53. int Operazione::sottrazione() {
  54.     return (x - y);
  55. }
  56.  
  57. int Operazione::risultato () {
  58.     if (operatore == '+')
  59.         return addizione();
  60.     else
  61.         return sottrazione();
  62. }
  63.  
  64. void Operazione::setx(int a) {
  65.     x = a;
  66. }
  67.  
  68. void Operazione::sety(int b) {
  69.     y = b;
  70. }
  71.  
  72. bool Operazione::setOperazione (char operazione) {
  73.         if (operazione != '-')
  74.             if (operazione != '+')
  75.                 return false;
  76.         operatore = operazione;
  77.         return true;
  78. }
  79.  
  80. bool Operazione::setAll(int a, char op, int b) {
  81.         setx(a);
  82.         sety(b);
  83.         return setOperazione (op);
  84. }



Ho letto che la definizione della classe va in un file header separato dal resto dell'implementazione.Ho provato a scorporare i due file,quindi ho inserito nell'header.h sola la definizione della classe e nel file .cpp tutto il resto...quindi implementazione dei metodi e main,ma quando lo compilo mi da tanti errori,come se le variabili non fossero state dichiarate.
Questo succede perchè nella classe ci sono attributi privati???Come si procede?
Perchè ho provato con un altro programma,ho inserito nell'header la classe (che però aveva solo attributi pubblici) e nel file cpp il resto e non ho avuto alcun problema...

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:02
Giovedì, 25/02/2010
hai messo
Codice sorgente - presumibilmente C/C++

  1. #include "nomefileheader.h"



nel file cpp?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:36
Giovedì, 25/02/2010
streghetta ... cosa è e a cosa serve un file header? Come si usa? Sono queste le domande che ti devi fare e le risposte, per prima cosa, le devi cercare sui libri ...




Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
streghetta (Normal User)
Newbie


Messaggi: 20
Iscritto: 19/02/2010

Segnala al moderatore
Postato alle 12:32
Giovedì, 25/02/2010
Un file header ha lo scopo di dire al compilatore cosa c'è nella libreria (per esempio, nomi di funzioni, struttura dati, valori restituiti dalle funzioni chiamate).
L’utente necessita di alcune di queste informazioni per sviluppare la propria applicazione, mentre il compilatore ne ha bisogno per generare il codice appropriato.

Avevo già testato altri esempi separando il file header dal file cpp,soltanto che avevo sempre definito attributi pubblici e il programma funzionava sempre,quindi credevo che adesso fosse un problema di attributi "privati".
Ma ho risolto...un banale problema di virgolette:era molto tardi quando ho postato,la stanchezza si è fatta sentire dopo aver passato una giornata intera davanti al pc e...non mi ero accorta di aver scritto il file header racchiuso tra < > al posto di " ".
Ma stamattina a mente fresca...:k:

Grazie del vostro aiuto...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:04
Giovedì, 25/02/2010
Testo quotato

Postato originariamente da streghetta:

Un file header ha lo scopo di dire al compilatore cosa c'è nella libreria (per esempio, nomi di funzioni, struttura dati, valori restituiti dalle funzioni chiamate).
L’utente necessita di alcune di queste informazioni per sviluppare la propria applicazione, mentre il compilatore ne ha bisogno per generare il codice appropriato.



Perfetto ... quindi sai che va indicato al cpp.

Testo quotato

Avevo già testato altri esempi separando il file header dal file cpp,soltanto che avevo sempre definito attributi pubblici e il programma funzionava sempre,quindi credevo che adesso fosse un problema di attributi "privati".
Ma ho risolto...un banale problema di virgolette:era molto tardi quando ho postato,la stanchezza si è fatta sentire dopo aver passato una giornata intera davanti al pc e...non mi ero accorta di aver scritto il file header racchiuso tra < > al posto di " ".
Ma stamattina a mente fresca...:k:

Grazie del vostro aiuto...



Ottimo ... risolvere da soli un problema è la cosa più "didatticamente utile" che esista ... Ciao.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote