Witam jestem tutaj nowy i jeszcze nie jestem obeznany na tym forum także proszę o wyrozumiałość.
Do rzeczy, mam zaimplementowaną klasę "stos" która ma przechowywać na stosie napisy typu string.
class stos
{
private:
std::string *str;
int ile;
public:
const int rozmiar;
}
- pare metod..
Problem polega na tym że gdy definiuje sobie konstruktor kopiujący to tworzy kopię ale niestety jakakąkolwiek zmianę wykonam na kopii to również wykonam ją na oryginale, wiem że problem leży we wskaźniku, wskażnik *str w kopii pokazuje na to samo co wskaźnik *str w oryginale stąd ten błąd. Nie wiem niestety jak go usunąć.
konstruktor i konstruktor kopiujący:
Stos::Stos(int a) : rozmiar(a)
{
ile = 0;
str = new std::string[rozmiar];
}
Stos::Stos(const Stos &wzor) : rozmiar(wzor.rozmiar)
{
std::string *str;
str = new std::string[rozmiar];
ile = wzor.ile;
*str = *(wzor.str);
}
Wiem ze mógłbym po prostu w pętli przekopiować elementy wzoru do nowo utworzonej tablicy, ciekawi mnie czy istnieje lepszy/szybszy sposób