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:

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;
}
Insomma secondo il libro è giusto e neanche il compilatore si oppone. Il problema è dato dal linker ld (sono su ubuntu):

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
Qualcuno potrebbe illuminarmi? Vi preeeeeeeeeeego!! :)