getter не возвращает значение

Имеется vector, который заполняется классе, необходимо передать его в другой класс, ну для этих целей сделал getter. По дебагу смотрел, возвращается пустой список. Проверил в классе, в котором заполняются данные, там vector заполнен некоторыми значениями. Как доходит программа до getter'а, то он оказывается пустой. Подскажите в чем причина?

Класс в котором заполняется vector (.h)

#ifndef INCLUDE_WALLSMANAGER_H_
#define INCLUDE_WALLSMANAGER_H_

#include <Wall.h>
#include <vector>

class WallsManager : IReader {
    std::vector<Wall> wallsToRenderList;
    std::vector<Wall> walls;
 public:
    void renderWalls();
    void Read() override;
    void renderVerticalWalls(Wall item);
    void renderHorizontallWalls(Wall item);

    const std::vector<Wall> &getWalls() const;

    void setWalls(const std::vector<Wall> &walls_);
};
#endif  // INCLUDE_WALLSMANAGER_H_

cpp файл

#include <WallsManager.h>
#include <BearLibTerminal.h>
#include <fstream>
#include <string>
#include <vector>

Wall wall{};

void WallsManager::Read() {
    int xSt, ySt, xEnd, yEnd;
    std::string direction;
    std::ifstream file("C:/Users/Konstantin/CLionProjects/Game/levels/WallsLevel");
    if (file) {
        while (!file.eof()) {
            file >> direction;
            if (direction == "hor") {
                file >> xSt >> xEnd >> ySt;
                wall.setXStart(xSt);
                wall.setXEnd(xEnd);
                wall.setYStart(ySt);
                wall.setDirection(direction);
                wallsToRenderList.push_back(wall);
            }
            if (direction == "vert") {
                file >> ySt >> yEnd >> xSt;
                wall.setYEnd(yEnd);
                wall.setYStart(ySt);
                wall.setXStart(xSt);
                wall.setDirection(direction);
                wallsToRenderList.push_back(wall);
            }
        }
    }
}

void WallsManager::renderVerticalWalls(Wall item) {
    for (int i = item.getYStart(); i < item.getYEnd(); i++) {
        terminal_put(i, item.getXStart(), '#');
        wall.setCurrentX(item.getXStart());
        wall.setCurrentY(i);
        walls.push_back(wall);
    }
}

void WallsManager::renderHorizontallWalls(Wall item) {
    for (int i = item.getXStart(); i < item.getXEnd(); i++) {
        terminal_put(i, item.getYStart(), '#');
        wall.setCurrentX(i);
        wall.setCurrentY(item.getYStart());
        walls.push_back(wall);
    }
}

void WallsManager::renderWalls() {
    for (auto item : wallsToRenderList) {
        if (item.getDirection() == "hor") {
            renderHorizontallWalls(item);
        }
        if (item.getDirection() == "vert") {
            renderVerticalWalls(item);
        }
    }
    setWalls(walls);
}

const std::vector<Wall> &WallsManager::getWalls() const {
    return walls;
}

void WallsManager::setWalls(const std::vector<Wall> &walls_) {
    WallsManager::walls = walls_;
}

То есть vector walls в методе getWalls() показывается в дебаге, как пустой.


Ответы (0 шт):