Skocz do zawartości
krasi

C++ I Przekazenie Do Funkcji

Rekomendowane odpowiedzi

Fragment klasy:

class node {public:	char *c;	node *next;	//node();	node(char *s, node *p =0) {	/*	int i;		for (i=0;i<strlen(s);i++) {		*(c+i) = s[i];		}		*(c+i) = '\0';   <- to daje segmentation fault */		//std::cout <<"Dostalem: " << s << "\n";		[b]c = s;[/b]		next = p; 	}	~node();};

W kodzie:

char buff[255];//petelka ustalajaca zawartosc tablicy:tail->next = new node(buff);

Efekt: jak testuje to wewnatrz metody gdzie przypisuje wartosc buff'owi to we wszystkich wezlach jest ostatnia wartosc.

Gdy testuje "poza" to dostaje krzaki co swiadczy, ze w pierszym listingu pod c podpinany jest adres z s, jak zrobic zeby wartosc byla skopiowana, a nie jej adres.

Dzieki za pomoc z gory.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dobra, a gdzie w klasce przydzielasz pamięc na c, w końcu c to jest wskaźnik na char i on przechowuje jedynie adres, w twoim przypadku na losowe miejsce w pamięci, które następnie zapisujesz wartościami z tablicy buff[], stąd masz segmentejszyn fault...?

 

druga sprawa, bardziej semantyczna...

Po co stosować klasy skoro elementy typu c sa publiczne i można w każdej chwili przypisać do nich cokolwiek bez żadnej kontroli :)

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...