Witam. Stworzyłem taką oto klasę abstrakcyjną:
#ifndef ABSTRACT_DMA_H_
#define ABSTRACT_DMA_H_
#include <iostream>
class abstractDMA
{
private:
char * label;
int rating;
protected: // moze sie przydac do metody View
const char * Label() {return label;}
const int Rating() {return rating;}
public:
abstractDMA(const char * l = "brak", int r = 0);
abstractDMA(const abstractDMA & rs);
abstractDMA & operator=(const abstractDMA & rs);
friend std::ostream & operator<<(std::ostream & os, const abstractDMA & rs);
virtual ~abstractDMA() = 0;
virtual void View() const = 0;
};
#endif // ABSTRACT_DMA_H_
Oraz dziedziczącą z niej, klasę pochodną:
#include "abstractDMA.h"
class hasDMA : public abstractDMA
{
private:
char * style;
public:
hasDMA(const char * s = "brak", const char * l = "brak", int r = 0);
hasDMA(const char * s, const abstractDMA & rs);
hasDMA(const hasDMA & hs);
virtual ~hasDMA() { delete [] style; }
hasDMA & operator=(const hasDMA & rs);
friend std::ostream & operator<<(std::ostream & os, const hasDMA & rs);
char * getstyle() { return style; }
virtual void View() const;
};
Metoda View() klasy abstrakcyjnej:
void abstractDMA::View() const
{
std::cout << "Wywolano metode View()" << std::endl;
std::cout << "Etykieta: " << label << std::endl;
std::cout << "Klasa: " << rating << std::endl;
}
Metoda View() klasy pochodnej:
void hasDMA::View() const
{
abstractDMA::View();
std::cout << "Styl: " << style << std::endl;
}
Po uruchomieniu programu mam problem z poprawnym wyświetleniem "stylu" tj: