Ho appena riscontrato il seguente errore (e ho trovato la soluzione online, ma non è presente in Stack Overflow):
(.gnu.linkonce. [stuff]): riferimento indefinito a [method] [file oggetto] :(. gnu.linkonce. [stuff]): riferimento indefinito a `typeinfo per [classname] '
Perché si potrebbe ottenere uno di questi errori di linker "riferimento indefinito a typeinfo"?
(Punti bonus se puoi spiegare cosa sta succedendo dietro le quinte.)
virtual void abc() =0;
(se la versione di base non viene mai chiamata)
abc()
così, puoi facilmente dimenticare di ridefinire abc()
la classe derivata e pensare che tutto sia a posto, dal momento che potrai comunque chiamare la funzione senza alcun problema. In questo articolo si trova una buona pratica per l'implementazione di funzioni virtuali pure , che consiste nel fare in modo che la funzione stampi "Funzione virtuale pura chiamata" e quindi blocchi il programma.
= 0;
.