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++ - Passare una struttura ad un metodo
Forum - C/C++ - Passare una struttura ad un metodo

Avatar
orsobimbo (Normal User)
Newbie


Messaggi: 8
Iscritto: 27/12/2014

Segnala al moderatore
Postato alle 21:08
Sabato, 27/12/2014
Ciao e buone feste,

mi sto cimentando nello studio del c++, vorrei chiedervi alcune cose:
Ho questa codice e vorrei passare le caratteristiche base di un rettangolo sfruttando "struct" e non passando ogni singolo attributo:
Codice sorgente - presumibilmente C#

  1. class Rectangle {
  2.     int width,height;
  3.         float a;
  4.  
  5.         struct features {
  6.  
  7.                 string color;
  8.                 int base;
  9.                 int height;
  10.         }vuoto
  11. public:
  12.     int area() {return width*height;}
  13.         Rectangle::Rectangle (int x, int y) : width(x), height(y) { }
  14.  
  15.         void setFeatures( features come ){      vuoto = come; }
  16.  
  17. };
  18.  
  19.  
  20. int main () {
  21.  
  22.         int risultato;
  23. struct features {
  24.  
  25.                 string color;
  26.                 int base;
  27.                 int height;
  28.         }vuoto;
  29.  
  30.  
  31.  
  32.         Rectangle ret (5,6); // dichiaro e inizializzo un oggetto chiamato ret di tipo rectangle
  33.  
  34.         Rectangle *p; // dichiaro un puntatore chiamato "p" ad un oggetto di tipo rectangle
  35.         p = &ret;   // leggo l'indirizzo della classe ret e lo memorizzo nel puntatore p per oggetti di tipo rectangle
  36.  
  37.  
  38.         risultato = p->area(); // una prova con l'operatore freccia deference
  39.  
  40.         vuoto.base = 100;
  41.         vuoto.color = "Red";
  42.         vuoto.height = 50;
  43.  
  44.         p->setFeatures(features); // Errore --------->  'features': tipo non valido come espressione
  45.  
  46.  
  47.         cout << risultato;
  48.  
  49.         cin.get();
  50.        
  51.        return 0;



Ho provato inizialmente a passare l'oggetto "vuoto" ( oggetto di tipo structure features) ma non funziona poi ho provato a tentativi
features, ma nulla

:asd: mi dite dove sbaglio
ciao  grazie

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:30
Sabato, 27/12/2014
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Rectangle {
  6.     int width,height;
  7.     float a;
  8.  
  9.  
  10. public:
  11.        struct features {
  12.                 string color;
  13.                 int base;
  14.                 int height;
  15.         }vuoto;
  16.        
  17.         int area() {return width*height;}
  18.         Rectangle::Rectangle (int x, int y) : width(x), height(y) { }
  19.  
  20.         void setFeatures( struct features come ){      vuoto = come; }
  21.  
  22. };
  23.  
  24.  
  25. int main () {
  26.  
  27.         int risultato;
  28.         Rectangle::features vuoto;
  29.  
  30.         Rectangle ret (5,6); // dichiaro e inizializzo un oggetto chiamato ret di tipo rectangle
  31.  
  32.         Rectangle *p; // dichiaro un puntatore chiamato "p" ad un oggetto di tipo rectangle
  33.         p = &ret;   // leggo l'indirizzo della classe ret e lo memorizzo nel puntatore p per oggetti di tipo rectangle
  34.  
  35.  
  36.         risultato = p->area(); // una prova con l'operatore freccia deference
  37.  
  38.         vuoto.base = 100;
  39.         vuoto.color = "Red";
  40.         vuoto.height = 50;
  41.  
  42.         p->setFeatures(vuoto);
  43.  
  44.  
  45.         cout << risultato;
  46.  
  47.         cin.get();
  48.        
  49.        return 0;
  50. }



Nota come ho spostato struct features nella sezione pubblica e rimosso la dichiarazione di features dal main. Vedi se riesci a capire cosa non andava.


Il mio blog: https://piero.dev
PM Quote
Avatar
orsobimbo (Normal User)
Newbie


Messaggi: 8
Iscritto: 27/12/2014

Segnala al moderatore
Postato alle 21:48
Sabato, 27/12/2014
Ciao Piero,
;)ho fatto un errore di scope nella classe portanto la struct fuori dalla zona public
Nel main ho preteso di passare una struct "non riferito a nessun oggetto" ( virgolette pechč non sono sicuro debba essere espresso cosė) e quindi non di tipo
rectangle !

giusto ?:D


Ultima modifica effettuata da orsobimbo il 27/12/2014 alle 21:49
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:52
Domenica, 28/12/2014
Circa. :)

Dichiarando due struct in due posti diversi, il compilatore li trattava come due tipi diversi (causando l'errore).


Il mio blog: https://piero.dev
PM Quote