Tablica 2D jako zmienna instancji
Więc jeśli mam klasę z tablicą 2D, którą chcę zainicjować z dwoma parametrami przekazanymi do konstruktora, jak bym to zrobił, ciągle napotykam błędy, ponieważ nie pozwala mi to w ogóle zaktualizować tablicy 2D w konstruktor.
--
Aktualizacja z komentarzy
:
W moim pliku nagłówkowym próbowałem obu
int array[][]
i
int **array
a następnie w pliku .cpp w konstruktorze próbuję to zrobić
array = new int[arg1][arg2]
Żadna z deklaracji tablicy w pliku nagłówkowym nie działała.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
array
[arg1][arg2]
Musisz określić typ tablicy, na przykład
zauważ, że
to tylko działa
https://coderoad.ru/936687/
w C ++ 11 - gdy używasz starych standardów, drugi rozmiar tablicy powinien być const (co prawdopodobnie nie jest tym, czego chcesz).
Istnieje również kilka dodatkowych artykułów omawiających ten sam problem:
Idealnie, ponieważ i tak używasz C ++, powinieneś użyć , jak sugeruje inna odpowiedź.
Jednak wektory zużywają dużo narzutów, prawda? Staram się zachować jasną pamięć. -
Zacznij od . Gdy aplikacja będzie już funkcjonalnie poprawna, jeśli nadal martwisz się o wykorzystanie pamięci i/lub wydajność,
zrobić testy porównawcze
... Jeśli prawidłowo hermetyzujesz tablicę 2D w klasę, zawsze możesz zmienić rzeczywistą implementację tablicy bez żadnego wpływu na kod, który jej używa.
Technicznie
jeśli chcesz mieć pewność, że masz jeden płaski obszar pamięci zawierający tablicę, do którego możesz użyć tablicy jednowymiarowej
imitacje
Dwuwymiarowa tablica, taka jak poniższy kod (żeby dać ci pomysł, zdecydowanie wymaga pewnych ulepszeń, szczególnie brakuje operatorów kopiowania i przypisania):
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: