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 è
mentre io vorrei ottenere
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!