Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziwny problem ze stringiem.

Ostatnio zmodyfikowano 2012-12-19 22:17
Autor Wiadomość
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.
P-71458
pekfos
» 2012-12-19 21:19:51
Pokaż kod.
P-71459
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ą
P-71460
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:
C/C++
class struktura
{
public:
    //...
    string surowcezx;
   
};

Funkcja, która wykonuje się jako pierwsza i działa poprawnie.
C/C++
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.
C/C++
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.
P-71462
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?
P-71465
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...
P-71467
« 1 »
  Strona 1 z 1