|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
[C++]Problema Get-Set
Ho questa lib mia:
Codice:
// files : head.h #include <string> #ifndef HEAD_H #define HEAD_H // la struttura delle persona class Persona { private: char* nome;// il nome char* cognome;//il cognome int anno;//anno public: Persona(char*, char*, int); Persona(); char getNome(); char getCognome(); char setNome(char* nm); char setCognome(char* cgn); int setAnno(); int getAnno(int ann); }; // costruttore vuoto Persona::Persona() { } //costruttore con argomenti Persona::Persona(char* nm, char* cgn, int ann=0) { nome = nm; cognome = cgn; anno = ann; } // ritorna il nome char Persona::getNome() { std::cout << nome; return nome; } // ritorna il cognome int Persona::getAnno() { std::cout << anno; return anno; } // ritorna l'anno di nascita char Persona::getCognome() { std::cout << cognome; return cognome; } // setta il nome char Persona::setNome(char* nm) { nome = nm; return nome; } // setta il cognome int Persona::setAnno(int ann) { anno = ann; return anno; } // setta l'anno di nascita char Persona::setCognome(char* cgn) { cgn = cognome; return cognome; } #endif Quote:
Sono semplici get e set ![]() |
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Consiglio già dato in passato... dividi file header (dichiarazioni) e file cpp (definizioni)
|
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Quote:
Che faccio di male?? Cmq ekko: Codice:
// files : head.h #include <string> #ifndef HEAD_H #define HEAD_H // la struttura delle persona class Persona { private: char* nome;// il nome char* cognome;//il cognome int anno;//anno public: Persona(char*, char*, int); Persona(); char getNome(); char getCognome(); char setNome(char* nm); char setCognome(char* cgn); int setAnno(); int getAnno(int ann); }; #endif |
|
![]() |
![]() |
![]() |
#4 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
e ancora...........
Codice:
// files : Princ.cpp #include <iostream> #include <string> #include "head.h" using namespace std; void main() { cout<<"\n"; } // ---------------------------------------- // Definizioni // ---------------------------------------- // costruttore vuoto Persona::Persona() { } //costruttore con argomenti Persona::Persona(char* nm, char* cgn, int ann=0) { nome = nm; cognome = cgn; anno = ann; } // ritorna il nome char Persona::getNome() { std::cout << nome; return nome; } // ritorna il cognome int Persona::getAnno() { std::cout << anno; return anno; } // ritorna l'anno di nascita char Persona::getCognome() { std::cout << cognome; return cognome; } // setta il nome char Persona::setNome(char* nm) { nome = nm; return nome; } // setta il cognome int Persona::setAnno(int ann) { anno = ann; return anno; } // setta l'anno di nascita char Persona::setCognome(char* cgn) { cgn = cognome; return cognome; } Quote:
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Le cose sono due...o usi string o usi i char *...nel caso che tu usi i char * devi allocare o staticamente o dinamicamente lo spazio per contenere le stringhe ed usare strcpy (non puoi assegnare direttamente il puntatore come fai ora) per copiare le stringhe passate in quelle locali alla classe...
Se usi string puoi fare così: Codice:
// files : Princ.cpp #include <iostream> #include <string> #include "head.h" using namespace std; void main() { Persona p("a", "b", 1999); p.getNome(); p.getCognome(); p.setCognome("ciao"); p.setNome("Pippo"); p.getNome(); p.getCognome(); } // ---------------------------------------- // Definizioni // ---------------------------------------- // costruttore vuoto Persona::Persona() { } //costruttore con argomenti Persona::Persona(char* nm, char* cgn, int ann=0) { nome = nm; cognome = cgn; anno = ann; } // ritorna il nome const char *Persona::getNome() const { cout << nome; return nome.c_str(); } // ritorna il cognome const int Persona::getAnno() { cout << anno; return anno; } // ritorna l'anno di nascita const char *Persona::getCognome() const { cout << cognome; return cognome.c_str(); } // setta il nome const char *Persona::setNome(const char* nm) { nome = nm; return nome.c_str(); } // setta il cognome const int Persona::setAnno(const int ann) { anno = ann; return anno; } // setta l'anno di nascita const char *Persona::setCognome(const char* cgn) { cognome = cgn; return cognome.c_str(); } Codice:
// files : head.h #include <string> using namespace std; #ifndef HEAD_H #define HEAD_H // la struttura delle persona class Persona { private: string nome;// il nome string cognome;//il cognome int anno;//anno public: Persona(char*, char*, int); Persona(); const char *getNome() const; const char *getCognome() const; const char *setNome(const char* nm); const char *setCognome(const char* cgn); const int setAnno(const int ann); const int getAnno(); }; #endif ![]() |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
perche quel .c_str(); ???
Sono prorpio un disastro ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Serve per convertire ritorna il contenuto della classe string nel classico modo della libreria standard C (vettore di char terminato da \0)...
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:49.