Salve ragazzi, ho un problemino. Studiando il C++ su un libro ho visto che le funzioni virtuali, oltre a permettere il polimorfismo, danno la possibilità di dichiarare nella classe base una funzione però di definirla solo nelle classi derivate. Per esempio:
Insomma secondo il libro è giusto e neanche il compilatore si oppone. Il problema è dato dal linker ld (sono su ubuntu):codice:#include <iostream> using namespace std; class base { public: virtual void prova(void); }; class derivata : public base { public: void prova(void){ cout << "Ciao" << endl; } }; int main() { base* temp= new derivata; temp->prova(); return 0; }
Qualcuno potrebbe illuminarmi? Vi preeeeeeeeeeego!! :)codice:alessio@linux:~/Desktop$ g++ Sorgente\ C++.cpp /tmp/ccU3vyVz.o: In function `base::base()': Sorgente C++.cpp:(.text._ZN4baseC2Ev[base::base()]+0x8): undefined reference to `vtable for base' /tmp/ccU3vyVz.o:(.rodata._ZTI8derivata[typeinfo for derivata]+0x8): undefined reference to `typeinfo for base' collect2: ld returned 1 exit status

Rispondi quotando
