premetto di avere una classe figlio esame e una classe principale studente. mettiamo che il codice della classe esame l' ho gia scritto!
In mezzo a sto codice mi potete aiutare a capire dove sbaglio? Le parti dove sono indeciso sono in grassetto.
codice:
//file .h
class studente{
friend istream& operator >>(istream&, studente&);
private:
char* nome;
char* cognome;
int matricola;
int num;
esame* esami;
public:
studente(char* ,char* ,int ,int ,esame* );
studente();
~studente();
char* nom();
char* cog();
int mat();
int _num();
esame* esa();
};
#endif
//file.cpp
#include "studente.h"
#include <iostream.h>
#include <string.h>
istream& operator >>(istream& i, studente& s)
{
i >> s.nome;
i >> s.cognome;
i >> s.matricola;
i >> s.num;
s.esami=new esame[s.num];
for (int k=0; k<s.num; k++)
i >> s.esame[k];
return i;
};
studente::studente(char* n,char* c,int m,int nu,esame* e)
{
int l;
l=strlen(n);
nome=new char[l];
strcpy(nome,n);
l=strlen(c);
cognome=new char[l];
strcpy(cognome,c);
matricola=m;
num=nu;
esame=new esami[i];
for (int i=0; i<num; i++)
esami[i]=e[i];
};
studente::studente()
{
nome=new char[13];
strcpy(nome,"non definito");
cognome=new char[13];
strcpy(cognome,"non definito");
matricola=-1;
num=0;
esami=new esame[0];
};
studente::~studente()
{
delete [] nome;
delete [] cognome;
delete [] esami;
};
char* studente::nom(){return nome;};
char* studente::cog(){return cognome;};
int studente::mat(){return matricola;};
int studente::_num(){return num;};
esame* studente::esa(){return esami;};
Credo di aver scritto il codice giusto, ma non capisco dove sta l'errore.Ho messo in grassetto le parti dove sono indeciso.
Mi potete aiutare?