Skocz do zawartości

Zablokowane wskaźnik w tablicy


TeoTN

Rekomendowane odpowiedzi

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

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

    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

    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

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

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

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...