Как изменить динамически распределенный массив производных классов через функцию? - PullRequest
0 голосов
/ 23 апреля 2020

Да, так что я пытался закодировать программу, которая создает набор фигур на основе классов / полиморфизма и прочего и сохраняет их в массив пользовательских форм. Но по какой-то причине мой код выдает мне это исключение:

Исключение: нарушение прав чтения. это было 0x CCCCCCCC. произошло

Хмм, я не совсем понимаю, что это значит, так как Engli sh - мой единственный язык.

Также вот мой код:

Итак, во-первых, я определил мой абстрактный базовый класс для фигур и прочего

class Shape {

public:
// tally number of shapes
static int shapeCount;
// constructor to add the number of shapes
Shape() { shapeCount++; }
// accessors
int getNumOfShapes() const { return shapeCount; } // return the amount of shapes created
double getArea() const { return area; }

 blah blah blah blah......

Далее я определил все дочерние классы для фигур (круг, прямоугольник и т. д. c)

После этого я сделал несколько функций где пользователь будет создавать формы и прочее Вот код для этого:

  void createCircle(Shape* array[SHAPE_LIMIT], double radiiOne, int xCoord , int yCoord, int& counter ){   

 array[counter] = new Circle(radiiOne, xCoord, yCoord);
 cout << " Circle created!" << endl;

}

Теперь В основной функции я попытался отобразить область отдельной фигуры, используя метод getArea ().

   cout << shapeArray[counter]->getArea() << endl;

Теперь я получаю исключение, также я убедился, что передал свой указатель на массив фигур в функцию, так что я в замешательстве.

int main() {
    Shape* shapeArray[SHAPE_LIMIT]; // This is the array which will hold all the shapes

    int numOfShapes = 0;

    blah blah blah....

Кто-то, пожалуйста, помогите, я надеюсь, я дал достаточное объяснение! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...