Halo mirki, potrzebuję pomocy z dość ciekawą sprawą. Jestem noobem w C++ (pochodzę z pythonowego środowiska) i mam zagwostkę:
Jaki typ ma wskaźnik na 2-wymiarową tablicę (10x10) wskaźników na obiekt (Cell)?
Chciałbym zwrócić z funkcji dokładnie taki typ wskaźnika (tak, wiem że teoretycznie vector rozwiązałby sprawę, ale nie w tym rzecz). Na razie doszedłem do tego, że zmienna tego typu będzie miała typ Cell*(*tmp)[10]. Opcją jest też zwrócenie wskaźnika na wskaźnik na obiekt z początku tablicy, ale to jest nieco zbyt uciążliwe (ręczne liczenie offsetów do wskaźników na kolejne elementy tablicy). Ma ktoś pomysł? Męczę się z tym już jakąś dobrą chwilę (╯°□°)╯︵┻━┻
@adamj57: Normalnie wskaźnik na wskaźnik czyli Cell** - nie musisz ręcznie liczyć offsetów, możesz się potem normalnie odwoływać do elementów przez nawiasy[][]
@adamj57: Nie powinno się używac zwykłych tablic. Jak chcesz stały rozmiar to std::array, jak dynamiczna tablica to std::vector. Jak alokujesz pamięć to korzystasz ze smart pointerów
@adamj57: Jeżeli nie chcesz wektorów to najprościej normalnie przemnożyć wymiary i zrobić Cell** tab = new Cell*[sizeX*sizeY]' a zamiast liczyć offsety zrób sobie funkcję Cell* getCell(int x,int y){return tab[y*sizeX+x;}
Halo mirki, potrzebuję pomocy z dość ciekawą sprawą. Jestem noobem w C++ (pochodzę z pythonowego środowiska) i mam zagwostkę:
Jaki typ ma wskaźnik na 2-wymiarową tablicę (10x10) wskaźników na obiekt (Cell)?
Chciałbym zwrócić z funkcji dokładnie taki typ wskaźnika (tak, wiem że teoretycznie vector rozwiązałby sprawę, ale nie w tym rzecz).
Na razie doszedłem do tego, że zmienna tego typu będzie miała typ
Cell*(*tmp)[10]
. Opcją jest też zwrócenie wskaźnika na wskaźnik na obiekt z początku tablicy, ale to jest nieco zbyt uciążliwe (ręczne liczenie offsetów do wskaźników na kolejne elementy tablicy).Ma ktoś pomysł? Męczę się z tym już jakąś dobrą chwilę (╯°□°)╯︵ ┻━┻
Komentarz usunięty przez autora
Cell** tab = new Cell*[sizeX*sizeY]'
Cell* getCell(int x,int y){return tab[y*sizeX+x;}a zamiast liczyć offsety zrób sobie funkcję