Ciao a tutti, devo fare l'overloading delll'ostream in una classe base e nelle sue derivate... ma ho qualche problema di logica...spero davvero che qualcuna mi possa aiutare:
(il codice che segue l'ho scritto adesso al volo...tralasciate eventuali errori di sintassi dovuti alla distrazione)

codice:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class Base
{
      friend ostream& operator <<(ostream& out, const Base& b)
                               {
                                           out<< "base\n";
                                           return out;
                               }
      
      public:
             Base()  {}
             virtual ~Base(){};
};

class Derived: public Base
{
      friend ostream& operator <<(ostream& out, const Derived& d)
                               {
                                           out<< "derived\n";
                                           return out;
                               }
      
      public:
             Derived()  {}
             virtual ~Derived(){};
};

int main()
{
    Base* pointBase;
    
    pointBase = new Base;
    cout << *pointBase;
    
    delete pointBase;
    
    pointBase = new Derived;
    cout << *pointBase;
    
    delete pointBase;
    
    system("PAUSE");
}
l'output che ottengo è
base
base
mentre io vorrei ottenere
base
derived
il problema si risolverebbe se io creassi un altra variabile nel main:
Derived* pointDeriver;
e utilizzassi quella... ma io ho la necessità di avere un unica variabile che sia puntatore a Base

spero di essere stato abbastanza chiaro...

grazie a tutti per l'aiuto


ciao!