Wyświetlenie pola klasy

0

Witam, mam taką klasę

class StringWrapper{
private:
	char * tab;
public:
	//char * tab;
	StringWrapper(const char * napis);
	StringWrapper(const StringWrapper & napis);
	static bool eq(const char * napis1, const StringWrapper & napis);
	static bool eqIcase(const char * napis1, const StringWrapper & napis);
	void append(const char * dodatek);
	void show();
	StringWrapper append(StringWrapper napis);
};

w main mam takie coś

StringWrapper s1("Witaj swiecie"); 
print(s1);

Chcę żeby funkcja print wyświetliła tekst podany w konstruktorze (pole tab)

void StringWrapper::show() {
	cout << "Tab: " << this->tab << endl;
}

void print(StringWrapper napis) {
	napis.show();
};

Program się kompiluje ale przy uruchomieniu dostaję komunikat "Naruszenie ochrony pamięci". Dlaczego?

0

Rezerwujesz pamięć przy przypisaniu łańcucha znaków do Twojej tablicy znaków tab?

Miło by było, jakbyś pokazał kod konstruktora oraz funkcji show().

Tak właściwie jak już piszesz w C++, to lepiej pracować na Stringach, nie musisz się martwić o pamięć i jej zarządzanie jak to jest w przypadku, gdy działasz na typie *char **.

1 użytkowników online, w tym zalogowanych: 0, gości: 1