
Cześć !
Mam problem z podobnej dziedziny.
Tworzę proxy - klasa bazowa i klasa proxy dziedzicząca.
Klasa dziedzicząca ma w liście inicjalizacyjnej konstruktora przypisać parametr do pola klasy bazowej.
Niestety, nie działa.
Poniżej zamieszczam kod; fragment hpp i cpp.
W zdjęciu po prawej print z błędami.
HPP///////////////////////////////////////
class DaneStat
‹
public:
DaneStat ();
// zwraca referencje na przechowywane dane
virtual const std::vector <float> &dane () const = 0;
virtual ~DaneStat () ‹›;
virtual const std::string &nazwa () const; // zwraca nazwe pliku
protected:
std::string nazwa_; // nazwa pliku
›;
// proxy - wczytuje prawdziwy obiekt przy pierwszym uĹĽyciu
class DaneStatProxy : public DaneStat
‹
public:
DaneStatProxy(std::string nazwa);
// zwraca referencje na przechowywane dane
virtual ~DaneStatProxy ();
virtual const std::vector <float> &dane () const;
virtual void wczytaj (std::istream &is, std::ostream &os);
protected:
DaneStatProxy *dane_proxy_;
›;
CPP///////////////////////////////////////
DaneStat::DaneStat () ‹› // w tej nie inicjalizujmy
//DaneStat::~DaneStat () ‹›
//DaneStat::dane () const ‹›
//DaneStat::&nazwa () const ‹return nazwa_;›
DaneStatProxy::DaneStatProxy(std::string nazwa) : DaneStat::nazwa_(nazwa), dane_proxy_(NULL) ‹›
DaneStatProxy::~DaneStatProxy () ‹delete dane_proxy_;›
DaneStatProxy DaneStatProxy::dane() const ‹return &dane_proxy_;›
DaneStatProxy::nazwa() const ‹return &nazwa_;›
DaneStatProxy::wczytaj (std::istream &is, std::ostream &os)
‹
if(!dane_proxy_) dane_proxy_ = new DaneStatReal(&nazwa);
dane_proxy_->wczytaj(is, os);
›