класс — матрица классов C ++ (указатель указателей)

Поэтому я столкнулся с некоторой проблемой в C ++ (моим первым языком программирования был C).

Допустим, у меня есть следующие классы:

2 заголовка (прямоугольник и сетка, предположим, что с классом точек все в порядке, и еще одно предположение, что в настоящее время нам не нужны функции печати)

Grid.h

#ifndef GRID_H
#define GRID_H
#ifndef RECT_H
#include "Rectangle.h"
#endif

class Grid
{
public:
Grid(int tileW, int tileH, int width, int height, int color);
~Grid();
Rectangle& getRectAt(const Point &p);
void print() const;
private:
int count;
Rectangle **recs;
};
#endif

Rect.h

#ifndef RECT_H
#define RECT_H
#ifndef POINT_H
#include "Point.h"#endif

class Rectangle
{
public:
Rectangle(int l, int u, int w, int h, int color);
int getColor() const;
void setColor(int color);
bool contains(const Point &p) const;
void print() const;
private:
const Point topLeft, bottomRight;
int color;
};

#endif

и 2 CPP:

Rect.cpp

#include "Rectangle.h"
Rectangle::Rectangle(int l, int u, int w, int h, int color) : topLeft(l, u), bottomRight(l + w, u + h) { this->color = color; }

int Rectangle::getColor() const
{
return this->color;
}

void Rectangle::setColor(int color)
{
this->color = color;
}

bool Rectangle::contains(const Point &p) const
{
return (this->topLeft.getX < p.getX && p.getX < this->bottomRight.getX
&& this->bottomRight.getY < p.getY && p.getY < this->bottomRight.getY);
}

void Rectangle::print() const
{
/**/
}

Grid.cpp

#include "Grid.h"
Grid::Grid(int tileW, int tileH, int width, int height, int color)
{
int index, index_c=0;
recs = new Rectangle *[width];

for (int index = 0; index < width; index++)
{
recs[index] = new Rectangle [height];
}

}

(предположим, что нам не нужны другие функции Grid, и конструктор не завершен).
Теперь, что я пытаюсь сделать, это в конструкторе Grid.cpp, я пытаюсь
динамически размещать массив массивов, но я просто не могу понять логику выделения памяти для классов в cpp.
Я был бы признателен, если бы кто-нибудь мог объяснить мне, как «новые» функции в cpp на классах и на n-мерных массивах (классов и в целом).

Надеюсь, вы поняли проблему, с которой я здесь сталкиваюсь.

Заранее спасибо.

-1

Решение

Grid::Grid(int tileW, int tileH, int width, int height, int color)  // האם ניתן להניח את תקינות הקלט ?
{
int i ,j ;
i=0;
count=height*width;
recs=new Rectangle* [count];

for(i=0;i<count;i++)
for(j=0;j<width;j++)
{
recs[i+j]=new Rectangle (tileW*j,tileH*i,tileW,1,tileH);
}

}

Вам нужно использовать 1 длинный массив и обращаться к нему как к 2-мерному.
Что касается вопроса о новом взгляде на керен калиф в CS13.
Нодельман король !!!!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]