TeoTN Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Czy jest możliwe przypisanie wskaźnika do tablicy, o tak: for (int y=0; y<=2; y++) { for (int x=0; x<=2; x++) { POLE* p[x][y] = new POLE(x,y); } } ??? Bo mi wywala "variable-sized object `p' may not be initialized " -.- PS chcę utworzyć 9 obiektów przy okazji umieszczając je na tablicy 3x3 i podając im ich współrzędne Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Jest możliwe np. double *tablica[5]; Nie wiem dlaczego wywala ci błąd EDIT: Nie znam się dobrze na c++ ale może to wina gwiazdki, że nie jest przy P tylko przy POLE Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 2 Maja 2009 Autor Udostępnij Opublikowano 2 Maja 2009 Dla zwykłych zmiennych wskaźniki mi działają, ale nie mogę utworzyć wskaźnika na obiekt w tablicy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Hmmm, Czy nie powinno to wyglądać tak? for (int y=0; y<=2; y++) { for (int x=0; x<=2; x++) { POLE* p = new POLE(x,y); } } ? Nie mam pojęcia jak wygląda struktura POLE, i do czego ma to służyć. Btw. Jak ma utworzyć wskaźnik którego wielkość wynosi 0?? Chociażby w tym: for (int y=0; y<=2; y++) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 2 Maja 2009 Autor Udostępnij Opublikowano 2 Maja 2009 class POLE { private: int x, y; zawartosc w; public: POLE(int xx,int yy) {x=xx; y=yy;} int getx() {return x;} int gety() {return y;} int getw() {return w;} }; Tą podwójną pętlą chcę utworzyć tablicę wskaźników na 9 obiektów :) Więc. W x=0,y=0 (inaczej mówiąc p[0][0]) znajdzie się 1szy objekt o zmiennych x=0, y=0. W p[0][1] obiekt o zmiennych x=0,y=1 itd, itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 for (int y=0; y<=2; y++) { for (int x=0; x<=2; x++) { POLE* p = new POLE; p->POLE( x, y ); } } Można inaczej ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 2 Maja 2009 Autor Udostępnij Opublikowano 2 Maja 2009 emmm... a czy to nie sprawi, że zmienna p będzie kryła wskaźnik do pierwszego obiektu, potem zostanie nadpisana wskaźnikiem do drugiego, itd!? I skoro p to wskaźnik na obiekt, to czy nie powinno być p->x miast p.x? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 A wcześniej jak było? Na to samo wychodzi ;o tak, tak, -> pomyliło mi się ;d, poprawię. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 2 Maja 2009 Autor Udostępnij Opublikowano 2 Maja 2009 POLE* p[x][y] = new POLE(x,y); Tutaj mam (teoretycznie) tablicę od p[0][0] do p[2][2] co daje 9 elementów. Skoro idziemy w pętli, to powinno być 9 wskaźników (p[0][0], p[0][1], p[0][2], p[1][0] ...) do 9 obiektów. A o ile mnie wzrok nie myli to Twój kod tworzy JEDEN wskaźnik i 9 obiektów :) W efekcie dla pozostałych linijek kodu (po pętlach) pozostanie w spadku wskaźnik p do obiektu nr. 9, a pozostałe 8 to sierotki ;) Czyż nie tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Wg. twojej klasy niepotrzebna jest tablica dwuwymiarowa: POLE* p = new POLE( x, y ); No i jak będziesz chciał pozycję z p[2][1] to wyjdzie to samo co z p[2][2]. kod konrada powinien być prawidłowy o_O Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 2 Maja 2009 Autor Udostępnij Opublikowano 2 Maja 2009 Okej, a jak potem wywołać obiekt o np. x=2, y=1??? Bo przysiągłbym, że tym sposobem utworzysz 9 obiektów i jeden wskaźnik :/ To jest poprawne: int x=2,y=2; POLE *p[x][y]; for(int i=0;i<x;i++) { for(int i2=0;i2<y;i2++) p[i][i2]=new POLE(x,y); } kolega mi pomógł :) Ale i tak dzięki wszystkim :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi