PDA

Visualizza la versione completa : [C/C++]: Primo approccio con le classi


crys0000
17-09-2006, 23:26
Questo il primo codice che ho scritto utilizzando le classi:


#include <iostream>
#include <conio.h>
using namespace std;

class persona
{
private:
char nome[20], cognome[20], titolo[10];

public:
setNome(char x[20]);
setCognome(char x[20]);
setTitolo(char x[10]);
getNome();
getCognome();
getTitolo();
}

void persona::setNome(char x[20])
{
nome = x;
}

void persona::setCognome(char x[20])
{
cognome = x;
}

char persona::getCognome()
{
return cognome;
}

char persona::getNome()
{
return nome;
}

void persona::setTitolo(char x[10])
{
titolo = x;
}

char persona::getTitolo()
{
return titolo;
}

int main()
{
persona a;
char nome[20], cognome[20], titolo[10];

printf("\nInserisci il titolo: ");
cin >> titolo;
a.setTitolo(titolo);

printf("\nInserisci il nome: ");
cin >> nome;
a.setNome(nome);

printf("\nInserisci il cognome: ");
cin >> cognome;
a.setCognome(cognome);

printf("\n\n%s %s %s", a.getTitolo(), a.getNome(), a.getCognome());

while (!_kbhit())
;
}

Pruroppo in fase di compilazione ottengo un errore che mi dice, in corrispondenza delle funzioni char,

impossibile convertire da 'char []' a 'char [20]'
Non vi sono conversioni in tipi di matrici,
sebbene vi siano conversioni in riferimenti o in puntatori a matrici

Che significa? Non mi sembra ci siano conversioni da fare, visto che le variabili sono tutte dello stesso tipo...

Trader
18-09-2006, 00:11
Ciao,
ho visto che cerchi di assegnare il valore du un arrray ad un altro utilizzando l' operatore '='
Per fare cio' che penso tu desideri, devi usare la funzione strcpy( Array A, Array B);
Altrimenti sembra tu voglia assegnare ad un array l' indirizzo di un altro, cosa comunque impossibile da fare.
Verifica anche le funzioni getNome(), getCognome(), getTitolo(), se vuoi che queste funzioni restituiscano un array, devi far si che restituiscano un indirizzo del primo elemento contenuto nell' array quindi cambiare la loro definizione e dicharazione.

mi sonopermesso di correggerti il programma,


#include <iostream>
#include <conio.h>
using namespace std;

class persona
{
private:
char nome[20], cognome[20], titolo[10];

public:
void setNome(char * x);
void setCognome(char * x);
void setTitolo(char * x);
char * getNome();
char * getCognome();
char * getTitolo();
};

void persona::setNome(char x[20])
{
strcpy(nome, x);
};

void persona::setCognome(char x[20])
{
strcpy(cognome, x);
};

char * persona::getCognome()
{
return cognome;
}

char * persona::getNome()
{
return nome;
}

void persona::setTitolo(char x[10])
{
strcpy(titolo , x);
}

char * persona::getTitolo()
{
return titolo;
}

void main()
{
persona a;
char nome[20], cognome[20], titolo[10];

printf("\nInserisci il titolo: ");
cin >> titolo;
a.setTitolo(titolo);

printf("\nInserisci il nome: ");
cin >> nome;
a.setNome(nome);

printf("\nInserisci il cognome: ");
cin >> cognome;
a.setCognome(cognome);

printf("\n\n%s %s %s", a.getTitolo(), a.getNome(), a.getCognome());

while (!_kbhit())
;
}






Ciao
Sergio

Loading