Sembra essere risolto, il problema era che alcuni costruttori non avevano niente dentro e mancavo la chiamata al costruttore della superclasse(o non so il termine tecnico in C++).
Ho diviso in due file per gestire meglio il tuo codice che era al quanto disortinato:
Classi.h
e naturalmente un file cpp che ho originalmente chiamato a.cppcodice:#include <iostream.h> #include <string.h> // classe club (base) class club { protected: char squadra[80]; char serie[2]; public: club(char *sq, char *se); club( club &l); }; //FINE dichiarazioni club::club(char *sq, char *se) { strcpy(squadra, sq); strcpy(serie,se); } club::club( club &l) { strcpy(squadra, l.squadra); } //FINE club //classe engage class engage { protected: int anno_inizio; int anno_fine; double inga; public: engage(int ai, int af, double ing); engage(const engage &o); double getengage(); }; //FINE dichiarazioni engage::engage(int ai, int af, double ing) { anno_inizio = ai; anno_fine = af; inga = ing; } engage::engage(const engage &o) { anno_inizio = o.anno_inizio; anno_fine = o.anno_fine; inga = o.inga; } double engage::getengage() { return (inga / (anno_fine-anno_inizio)); } //FINE engage //classe giocatore class giocatore : public club, public engage { protected: char nome[50]; char cognome[50]; char data_nascita[20]; char luogo_nascita[50]; public: friend void stampa_engage(giocatore obj); giocatore(char *sq, char *se, int ai, int af, double ing, char *n, char *c,char *dn, char *ln); giocatore(giocatore &ogg); char *getname(); char *getcogn(); }; //FINE dichiarazioni giocatore::giocatore(char *sq, char *se, int ai, int af, double ing, char *n, char *c,char *dn, char *ln) : club(sq, se), engage(ai, af, ing) { strcpy(nome,n); strcpy(cognome,c); strcpy(data_nascita,dn); strcpy(luogo_nascita,ln); } giocatore::giocatore(giocatore &ogg) : club(ogg.squadra, ogg.serie), engage(ogg.anno_inizio, ogg.anno_fine, ogg.inga) { strcpy(nome,ogg.nome); strcpy(cognome,ogg.cognome); strcpy(data_nascita, ogg.data_nascita); strcpy(luogo_nascita, ogg.data_nascita); } char* giocatore::getname() { return nome; } char* giocatore::getcogn() { return cognome; } void stampa_engage(giocatore obj){ cout << "il suo ingo annuo è di: " << obj.getengage(); } //FINE giocatore
a.cpp
codice:#include "Classi.h" int main() { giocatore maldini("Milan", "A", 2000, 2006, 5000000, "Paolo", "Maldini", "12 Aprile 1975", "Milano"); cout << maldini.getcogn() << endl; cout << maldini.getengage() << endl; cout << maldini.getname() << endl; return 0; }
Ho provato compila con 0 errori 0 warning e funziona quando lo provo.
![]()

Rispondi quotando