C++ 标头中的编译器错误,"was not declared in this scope"

compiler error in c++ header, "was not declared in this scope"

本文关键字:not was declared in scope this 错误 编译器 C++      更新时间:2023-10-16

当我尝试编译我的头文件时,编译器告诉我" '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

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

std::vector<std::vector<sf::Vector2i> > map;
这就是为什么如果你想在

另一个类型中使用一个 STL 类型,那么 typedef STL 类型总是一个好主意。所以最好这样做:

typedef std::vector<sf::Vector2i> Mytype;
std::vector<Mytype> map;

这样,您就不会因为忘记在">"之间放置空格而出现编译错误。