Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

xcode c++ tablice wskaznikow :/


  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 majowy_dejf

majowy_dejf
  • 71 postów
  • Skądwro/zako

Napisano 13 stycznia 2008 - 17:06

Witajcie,
poniewaz duzo tu ludzi, co sie na tym znaja, czy ktos moglby mnie osiwecic w nast. sprawie:
-jest np klasa bubu, ktora w swej strukturze ma jakies pola:
class bubu
{
public: 
  pole a;
  pole b;
 ...

 bubu(arg a, arg f)
{}
 
};
Tworzymy tablice dynamiczna:

bubu **tablica;
tablica= new bubu* [rozmiar];

for (int i=0 // cos nie chce wyswietlac reszty nawiasu: i mniejsze od rozmiar, i plus plus)
{
tablica[i]=new bubu(a,f);
}


Teraz chodzi o to, zeby pod Xcode i jego debuggerem móc sprawdzac kolejne rekordy tablicy talica[], w ktorej siedza obiekty bubu i maja jakies pola, ktore koniecznie chce w danej chwili zobaczyc. Jak wiadomo tablica to wskaznik na poczatek tabl. wiec debugger pokazuje pierwszy rekord. no i slusznie, tylko jak ujrzec reszte.

mala dygresyja:
w chwili gdy konstruktor klasy bubu bylby konstr. bezargumentowym mozna wtedy tablice traktowac jako: bubu *tablica= new bubu[rozmiar]. Takie obiekty w debugerze moge sprawdzac, gdyz wystarczy ze sizeof(bubu) zwroci mi w bajtach rozmiar i w Xcodowym debugerze dodam szesnastkowo te wartosc do adresu poczatku tablicy i juz mam kolejny rekord. niestety uzywajac ** juz tak nie jest ;(

help!
pzdr!

#2 mroman

mroman
  • 54 postów
  • SkądLublin

Napisano 15 stycznia 2008 - 00:04

jak tak będziesz wklejał kod, to na pewno nikt Ci nie odpowie. nie lepiej działający plik z problemem gdzieś wrzucić?

1. xcode korzysta z gdb wiec zawsze można w man sprawdzic.

aby wypisac zmienna piszesz:
print zmienna

np:

(gdb) print tablica->b
$6 = 2
(gdb) print tablica[2]->b
$7 = 2
(gdb) print tablica[5]->b
Cannot access memory at address 0x4

2. w debuggerze w xcode można taką tablice wyświetlic tak jak inne.
dla kodu:
class bubu
{
public:
int a;
int b;

bubu(int aa, int bb)
{
a=aa;
b=bb;
}

};

int main() {
bubu **tablica;
tablica= new bubu* [5];

for (int i=0;i<5;i++)
{
tablica[i]=new bubu(i,i+1);
}
return 0;
}

wyświetlasz tak:
w okienku expressions wpisujesz:
{bubu*}tablica@5

lub
*tablica@5

wiecej znajdziesz:
w dokumantacji gdb na dysku
  • MacDada i majowy_dejf lubią to

#3 majowy_dejf

majowy_dejf
  • 71 postów
  • Skądwro/zako

Napisano 20 stycznia 2008 - 16:20

wyświetlasz tak:
w okienku expressions wpisujesz:
{bubu*}tablica@5

lub
*tablica@5


Superrr!!! Dzieki Ci za to mroman! a juz tracilem nadzieje. oczywiscie od dzis bede przedkladal dokumentacje nad role bohatera poszukujacego :)

oczywiscie punkt++
pozdro!




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych