Неизвестные ошибки в проекте SFML/C++ (visual studio 2019 V. 16.2):
Недавно я учусь делать 2d-игру в SFML, используя учебную серию на youtube от Suraj Sharma(в настоящее время видео 57):
https://www.youtube.com/watch?v=kwd_AVCkvXE&list=PL6xSOsbVA1ebkU66okpi-KViAO8_9DJKg&index=57
После 10:14 в видео я получаю кучу ошибок в классе 'TileMap'
Вот этот код:
Наслаждайтесь в прицеле орудия.ч:
<pre>#pragma once #ifndef TILE_MAP_HH #define TILE_MAP_HH #include "Tile.h" class TileMap { private: float GridSizeF; unsigned GridSizeU; unsigned Layers; sf::Vector2u MaxSize; std::vector<std::vector<std::vector<Tile>>>Map; public: TileMap(); virtual~TileMap(); //Funcs void Update(); void Render(sf::RenderTarget& target); }; #endif // !TILE_MAP_HH
TileMap.cpp:
<pre>#include "pch.h" #include "TileMap.h" TileMap::TileMap() { this->GridSizeF = 50.f; this->GridSizeU = static_cast<unsigned>(this->GridSizeF); this->MaxSize.x = 10; this->MaxSize.y = 10; this->Layers = 1; /*Both push_back and resize functions have E0135 error which says: class "std::vector<std::vector<std::vector<Tile, std::allocator<Tile>>, std::allocator<std::vector<Tile, std::allocator<Tile>>>>, std::allocator<std::vector<std::vector<Tile, std::allocator<Tile>>, std::allocator<std::vector<Tile, std::allocator<Tile>>>>>>" has no member "push_back"("resize") */ //E0020 : x,y,z are undefined //E0065 : expected a ';' in x,y,z for loop declaration this->Map.resize(this->MaxSize.x); for (size_t x = 0; x < this->MaxSize.x; x++) { this->Map.push_back(std::vector<std::vector<Tile>>()); for (size_t y = 0; y < this->MaxSize.y; y++) { this->Map.resize(this->MaxSize.x); this->Map[x].push_back(std::vector<Tile>()); for (size_t z = 0; z < this->Layers; z++) { this->Map.resize(this->MaxSize.x); this->Map[x][y].push_back(Tile(x*this->GridSizeF, y * this->GridSizeF, this->GridSizeF)); } } } } TileMap::~TileMap() { } //Funcs void TileMap::Update() { } void TileMap::Render(sf::RenderTarget& target) { for (auto& x : this->Map) { /*E2291:this range-based 'for' statement requires a suitable 'begin' function and none was found */ for (auto& y : x) { for (auto& z : y) { z.Render(target); } } } }
До появления видео 57 проект работал отлично.
Кто-нибудь может мне помочь ?
Что я уже пробовал:
Я проверил предварительно скомпилированный заголовочный файл в 'TileMap.cpp-и все в порядке.