|
|||||||
|
|
|
![]() |
|
|
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: 16:49.



















