Dziwny problem ze stringiem.
Ostatnio zmodyfikowano 2012-12-19 22:17
czosnek17 Temat założony przez niniejszego użytkownika |
Dziwny problem ze stringiem. » 2012-12-19 21:06:06 W klasie (właściwie struktura) mam zmienną typu string. W jednej funkcji zapisuję do niej tekst i zaraz po tym wypisuję go do konsoli - wszystko ok. Ale już w następnej funkcji, gdy chcę znów napisać tą samą zmienną w konsoli, zaczyna ona wariować i wypisuje wszystkie możliwe znaczki, program zawiesza się. Między tymi działaniami nawet nie używam tej zmiennej, więc o co tu chodzi?! Ciekawe, że jak przed wypisaniem zmiennej w drugiej funkcji przypiszę do niej jakiś tekst, to wszystko działa dobrze.
To musi być znak końca świata. |
|
pekfos |
» 2012-12-19 21:19:51 Pokaż kod. |
|
akwes |
» 2012-12-19 21:22:07 Ciekawe, że jak przed wypisaniem zmiennej w drugiej funkcji przypiszę do niej jakiś tekst, to wszystko działa dobrze. |
Czyli pewnie nie inicjalizujesz zmiennej, albo korzystasz ze zmiennej tymczasowej przesłaniającej zmienna klasową |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-12-19 21:36:03 Całego kodu nie wstawię, bo ma ponad 900 linijek, ale pokażę fragmenty, z których korzysta ta zmienna. Struktura: class struktura { public: string surowcezx; };
Funkcja, która wykonuje się jako pierwsza i działa poprawnie. void klejpl( gpointer dane, { struct struktura * gpp; gpp =( struct struktura * ) dane; gpp->surowcezx = "Zelazo: "; cout << "gpp->surowcezx== " << gpp->surowcezx << endl; }
Następna funkcja, tu już się dzieją te dziwne rzeczy. W tej funkcji po przypisaniu zmiennej jakiejś wartości program działa dobrze. void zapisywanie( gpointer dane ) { struct struktura * gpp; gpp =( struct struktura * ) dane; cout << gpp->surowcezx << endl; }
Nigdzie więcej w programie nie używam tej zmiennej. edit: Czyli pewnie nie inicjalizujesz zmiennej, albo korzystasz ze zmiennej tymczasowej przesłaniającej zmienna klasową
|
Inicjalizuję w 1. funkcji. albo korzystasz ze zmiennej tymczasowej przesłaniającej zmienna klasową
|
Chodzi o to, że mam inną zmienną, a potem nie przypisuję jej do zmiennej w strukturze? Jeżeli o to chodzi, to nie, jak z resztą widać w kodzie. |
|
Savail |
» 2012-12-19 21:45:07 Sprawdź czy przypisanie do wskaźnika się powiodło. if( gpp != NULL ) Jeśli wartość wskaźnika wynosi NULL to może ten twój typ gpointer niekoniecznie da radę przekonwertować na wskaźnik do obiektu twojej struktury? |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-12-19 22:17:32
Sprawdź czy przypisanie do wskaźnika się powiodło.
| Powiodło się.
może ten twój typ gpointer niekoniecznie da radę przekonwertować na wskaźnik do obiektu twojej struktury?
| Nie wiem, czy o to chodzi, ale używam w strukturze jeszcze jeszcze inne typy zmiennych np gchar, int, GtkWidget i zawsze działa dobrze. Teraz wziąłem inną zmienną ze struktury, chciałem ją wypisać i program przestaje działać. Ta zmienna też działa w innych funkcjach. Wygląda na to, że coś jest z funkcją, a do każdej funkcji przekazuję strukturę dokładnie tak samo.Nie ogarniam tego...
A jednak... Wyrąbałem się na obsłudze buttona, zapomniałem go odebrać w argumentach funkcji skutkiem czego zamiast wskaźnika na strukturę dostałem na przycisk. Wszystko już działa... |
|
« 1 » |