当我尝试编译我的头文件时,编译器告诉我“'map'未在此范围内声明”(public:
下面的行)。为什么呢?
#pragma once
#include <SFML/Graphics.hpp>
#include <iostream>
#include <fstream>
#include <cctype>
#include <string>
#include <vector>
#ifndef TILEMAP_H
#define TILEMAP_H
class TileMap{
public:
std::vector<std::vector<sf::Vector2i>> map;
std::ifstream file;
TileMap(std::string name);
sf::Sprite tiles;
sf::Texture tileTexture;
void update();
void draw(sf::RenderWindow* window);
};
#endif
答案 0 :(得分:6)
你应该在两个“&gt;”之间留一个空格否则编译器会将其与“&gt;&gt;”混淆运营商。所以这样做:
std::vector<std::vector<sf::Vector2i> > map;
这就是为什么如果你想在另一个中使用一个STL类型,那么输入一个STL类型总是一个好主意。所以最好这样做:
typedef std::vector<sf::Vector2i> Mytype;
std::vector<Mytype> map;
这样你就不会因为忘记在“&gt;”之间放置空格而得到编译错误。