PDA

View Full Version : [C++]Errore costruttore di copia ereditato


86pietro
12-11-2018, 19:18
EDIT: ho risolto, l'errore si riferiva al codice incompleto di una funzione virtual. Stranamente mi veniva segnalato solo dopo aver scritto il costr. di copia.
Sto scrivendo una classe base Attivita con variabili membro:
int PID;
char* Descrizione;
bool Started;

Ed una classe derivata Processo con var. membro:
char* NomeImmagine;
char Stato;

Ho scritto il costruttore di copia della prima come:

Attivita::Attivita(const Attivita& A){
PID=A.PID;
Descrizione=new char[strlen(A.Descrizione)+1];
strcpy(Descrizione,A.Descrizione);
Started=A.Started;
}
E non mi dà nessun problema.

Ma quando voglio ereditare il costr. di copia di Processo come:

Processo::Processo(const Processo& P):Attivita(P){
NomeImmagine=new char[strlen(P.NomeImmagine)+1];
strcpy(NomeImmagine,P.NomeImmagine);
Stato=P.Stato;
}

Compilando si apre il MakeFile.win e mi dà errore undefined reference to 'vtable for Processo'
Cos'è successo? Non mi sembra di aver fatto nessun errore.

sottovento
13-11-2018, 13:31
Non hai fatto nessun errore. Anzi, ero curioso, quindi ho provato ed il codice si e' compilato correttamente.
Probabilmente l'errore e' da un'altra parte, magari un pezzo di codice che non hai postato. Il messaggio di errore e' piuttosto criptico, ma specifica che l'errore e' nella definizione di qualche metodo virtuale

86pietro
13-11-2018, 18:00
Non hai fatto nessun errore. Anzi, ero curioso, quindi ho provato ed il codice si e' compilato correttamente.
Probabilmente l'errore e' da un'altra parte, magari un pezzo di codice che non hai postato. Il messaggio di errore e' piuttosto criptico, ma specifica che l'errore e' nella definizione di qualche metodo virtuale

Infatti, ho editato il messaggio.
Avevo mancato parti di codice in una funzione virtual, e l'errore si riferiva a quello, ma avendomelo segnalato solo dopo aver implementato il costr. di copia mi ero convinto di dover cercare l'errore lì. Grazie mille.