Jump to content

Witaj!

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

Photo
- - - - -

xcode c++ tablice wskaznikow :/


  • Please log in to reply
2 replies to this topic

#1 majowy_dejf

majowy_dejf
  • 71 posts
  • Skądwro/zako

Posted 13 January 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 posts
  • SkądLublin

Posted 15 January 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 and majowy_dejf like this

#3 majowy_dejf

majowy_dejf
  • 71 posts
  • Skądwro/zako

Posted 20 January 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!




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users