Wyświetlenie pola klasy

Wyświetlenie pola klasy
mozgwieczysty
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Witam, mam taką klasę

Kopiuj
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ś

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

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

Kopiuj
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?

pasasap
  • Rejestracja: dni
  • Ostatnio: dni
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 **.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.