Хорошо, я пытаюсь поднять голову вокруг указателей, но как только я начну использовать что-то вроде class **c
, я заблудился.C++ Как использовать динамический массив указателей?
Говорят, у меня был
struct POINT{ int x, y, z; };
struct POLYGON{ POINT **vertices; int size; };
POINT points[10];
InputPoints(points,10); //fills up the points array somehow
POLYGON square;
//the following is where I'm lost
square.vertices = new *POINT[4];
square.vertices[0] = *points[2];
square.vertices[1] = *points[4];
square.vertices[2] = *points[1];
square.vertices[3] = *points[7];
На данный момент, square
должен держать массив указателей, причем каждый опорный пункт в points
. Тогда
square.vertices[2].x = 200; //I think this is done wrong too
должны изменить points[1].x
200.
Как изменить код выше на самом деле это сделать? И хотя я понимаю, что использование std :: vector будет лучше, я пытаюсь узнать, как работают указатели.
Вы уверены, что эта линия, square.vertices [0] = * points [2]; и все следующие три строки работают правильно? point - это массив POINT, и вы должны написать его как; square.vertices [0] = & points [2]; что ты говоришь? – nommyravian
Да, это выглядит лучше. Я попробую это (ответ tacp говорит то же самое). Мой код, приведенный выше, был просто попыткой проиллюстрировать то, что я хотел сделать. Я не думаю, что он даже компилируется. – slicedtoad