marcintom Napisano Kwiecień 24, 2006 Zgłoszenie Share Napisano Kwiecień 24, 2006 wiem ze to raczej nie to forum ale spieszy mi sie ogromnie to kod #include<iostream> using namespace std; class elem { char *imie; elem *nast; public: elem (const char *_imie, elem *_nast) { int i=0; char zero= 0; while ( _imie[i] != zero ) { cout << imie[i]; imie[i] = _imie[i]; i++;} imie[i] = 0; nast = _nast; } ~elem(){ }; }; int main() { cout << "0"; const char *z = "imie"; cout << "1"; elem x(z, NULL); return 0; Czemu to cholerstwo wywala naruszenie ochrony pamieci - roznych zeczy probowalem i nie wiem Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
koko Napisano Kwiecień 25, 2006 Zgłoszenie Share Napisano Kwiecień 25, 2006 Przede wszystkim musisz zaalokować pamięć, a w destruktorze powinieneś ją zwolnić. elem (const char *_imie, elem *_nast) { int i=0; // char zero= 0;// nie wiem po co to jest // tutaj alokujesz pamiec nastringa imie = new char[strlen(_imie) + 1]; //while ( _imie[i] != zero ) while ( _imie[i]) { //cout << imie[i]; imie[i] = _imie[i]; i++; } imie[i] = 0; nast = _nast; } ~elem(){ // tu dodałem delete imie; }; A w tym konstruktorze to mógłbyś zamiast tego żmudnego kopiowania znak po znaku użyć fukcji strcpy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się