Dzień Dobry,
Zaczynam kompletnie dopiero dziedziczenie i miałbym prośbe, czy ktoś mógłby mi wskazać czemu występuje błąd, co robię źle, i dlaczego, chciałbym bardzo perfekcyjnie zrozumieć temat, nie chcę kopiować bezmyślnie kodu. Byłbym dozgonnie wdzięczny za pomoc.
#include <iostream>
using namespace std;
inline void czytaj(int *czyt, int dl) {
for (int i = 0; i < dl; cout << *(czyt + i) << " ", i++);
}
class CTablicaInt {
protected:
int * wsk;
int rozmiar;
void inicjuj() {
wsk = new int[rozmiar];
for (int i = 0; i < rozmiar; wsk[i] = 0, i++);
}
inline bool sprawdz();
public:
CTablicaInt(int roz);
CTablicaInt(int *wskaz, int roz);
CTablicaInt(const CTablicaInt & s);
int & operator [](int i) {
return wsk[i];
cout << "DZIALA OPERATOR [] " << endl;
} // operator []
CTablicaInt & operator =(const CTablicaInt &p);
int get_rozmiar() {
return rozmiar;
}
friend std::ostream & operator <<(std::ostream &s, const CTablicaInt &a) {
s << "Jestem operatorem << \n rozmiar : " << a.rozmiar << "\n";
for (int i = 0; i < a.rozmiar; i++) {
s << *(a.wsk + i) << " ";
}
s << "\n";
return s;
} // operator <<
void sortuj();
~CTablicaInt();
};
class CStosInt: private CTablicaInt {
protected:
CTablicaInt &y;
//CTablicaInt *y;
public:
CStosInt(CTablicaInt &z) : CTablicaInt(z), y(z) {};
// CStosInt( CTablicaInt &z):CTablicaInt(z){y=&z;};
bool czy_pusty();
bool czy_pelny();
void wloz(int a); // pierwszy wchodzi ostatni wychodzi ! FILO !
void zdejmij();
void wyswietl(){
cout << y;
}
~CStosInt();
};
CStosInt :: ~CStosInt(){
delete &y;
}
void CStosInt::wloz(int a) {
int *nowy = new int[y.get_rozmiar() + 1];
for (int i=0 ; i < rozmiar ; i++){
nowy [i] = y[i];
}
CTablicaInt c = (nowy,y.get_rozmiar()+1);
y = c;
c.~CTablicaInt();
}
int main() {
int tab[] = { 1, 2, 3, 4, 664, 23, 2313, 43, 234, 23423, 232 };
CTablicaInt a(tab, 5);
CStosInt b(a);
b.wloz(15);
b.wyswietl();
return 0;
}
CTablicaInt::~CTablicaInt() {
delete wsk;
}
CTablicaInt & CTablicaInt::operator =(const CTablicaInt &p) {
if (this == &p) {
return *this;
}
delete wsk;
rozmiar = p.rozmiar;
wsk = new int[rozmiar];
for (int i = 0; i < p.rozmiar; i++) {
*(wsk + i) = *(p.wsk + i);
}
cout << "OPERATOR PRZYPISANIA" << endl;
return *this;
}
CTablicaInt::CTablicaInt(const CTablicaInt & s) {
wsk = s.wsk;
rozmiar = s.rozmiar;
cout << "KONSTUKTOR KOPIUJACY : " << endl;
}
CTablicaInt::CTablicaInt(int *wskaz, int roz) {
rozmiar = roz;
inicjuj();
for (int i = 0; i < roz; i++) {
*(wsk + i) = *(wskaz + i);
}
cout << "JESTEM KONSTRUKTOREM 2" << endl;
}