c ++标头中的编译器错误,"未在此范围内声明"

Ama*_*ann 3 c++ compiler-errors

当我尝试编译我的头文件时,编译器告诉我"'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
Run Code Online (Sandbox Code Playgroud)

ycs*_*hao 6

你应该在两个">"之间有一个空格,否则编译器会将它与">>"运算符混淆.所以这样做:

std::vector<std::vector<sf::Vector2i> > map;
Run Code Online (Sandbox Code Playgroud)

这就是为什么如果你想在另一个里面使用一个STL类型,那么输入自定义STL类型总是一个好主意.所以这样做更好:

typedef std::vector<sf::Vector2i> Mytype;
std::vector<Mytype> map;
Run Code Online (Sandbox Code Playgroud)

这样你就不会因为忘记在">"之间放置空格而得到编译错误.