Может ли кто-нибудь сказать мне, почему мои методы набора (setHorizontal и setVertical) не работают?
Когда метод набора завершен, я не вижу изменений в матрице.
Я динамически выделяю матрица (которая является членом класса TrafficSystem). Думаю проблема связана с инициализацией. Но когда вызывается конструктор ячейки, указатели членов класса должны быть инициализированы как nullptr
.
TrafficSystem. cc:
void TrafficSystem::populateMatrix() {
// create the dynamic allocation of the matrix
_matrix = new cell * [_n];
for (int i = 0; i < _n; i++) {
_matrix[i] = new cell[_m];
}
// loop over the streets and insert them to the matrix
for (int st = 0; st < _allStreets.size(); st++)
{
street *current_street = &(_allStreets.at(st));
int x = current_street->getX();
int y = current_street->getY();
int length = (current_street->getStreet_length()) / RATIO;
if (current_street->getDirection() == street::direction::Horizontal) {
for (int j = y; j < length; j++) {
_matrix[x][j].setHorizontal(current_street);
}
}
else if (current_street->getDirection() == street::direction::Vertical) {
for (int i = x; i < length; i++) {
_matrix[i][y].setVertical(current_street);
}
}
}
cell.h:
class cell
{
private:
const street* _horizontalSt;
const street* _verticalSt;
public:
cell(street* horizontalSt = nullptr, street* verticalSt = nullptr): _horizontalSt(horizontalSt), _verticalSt(verticalSt){}
~cell() {};
const street* getSt1() const { return _horizontalSt; }
const street* getSt2() const { return _verticalSt; }
void setHorizontal(const street* st) { _horizontalSt = st;}
void setVertical(const street* st) { _verticalSt = st; }
};