C++ ';未在此范围内声明';C++;

C++ ';未在此范围内声明';C++;,c++,compiler-errors,sfml,C++,Compiler Errors,Sfml,我有一些粗鲁的错误。。。我在网上搜索了一下,我可以在任何地方看到她,但仍然没有解决我的问题 这是我的主页: #include <iostream> #include "SFML/Network.hpp" #include "decode.hpp" #include "listOfFunction.hpp" #include "map.hpp" void createSocket(){ unsigned short bindPort = 12800; unsigned

我有一些粗鲁的错误。。。我在网上搜索了一下,我可以在任何地方看到她,但仍然没有解决我的问题

这是我的主页

#include <iostream>
#include "SFML/Network.hpp"
#include "decode.hpp"
#include "listOfFunction.hpp"
#include "map.hpp"

void createSocket(){
    unsigned short bindPort = 12800;
    unsigned short clientPort;
    int ret = 0;
    sf::UdpSocket socket;
    sf::IpAddress clientAddr;
    sf::Packet packet;
    Map mainMap;

    if (socket.bind(bindPort) != sf::Socket::Done){
        if (sf::Socket::Error) std::cout << "An unexpected error happened : Fatal Error !" << std::endl;
        if (sf::Socket::NotReady) std::cout << "The socket is not ready to send/receive data yet !" << std::endl;
    }

    while(1){
        packet.clear();
        socket.receive(packet, clientAddr, clientPort);
        std::string header = readFromPacket(packet);
        ret = callFunction(packet, header, clientAddr, clientPort, mainMap, socket);
    }
}

int main(){
    createSocket();
}
#包括
#包括“SFML/Network.hpp”
#包括“decode.hpp”
#包括“listOfFunction.hpp”
#包括“map.hpp”
void createSocket(){
无符号短bindPort=12800;
未签名的短客户端端口;
int-ret=0;
sf::UdpSocket插座;
sf::IpAddress clientAddress;
sf::分组;
地图主地图;
if(socket.bind(bindPort)!=sf::socket::Done){
if(sf::Socket::Error)std::cout
问题可能与标题有关,但找不到原因

那完全正确!你申请错了

您使用了错误hpp文件中的包含保护:

#ifndef DECODE_H_INCLUDED
map.hpp
中,它来自
decode.hpp
。它应该是

#ifndef MAP_H_INCLUDED
问题可能与标题有关,但找不到原因

那完全正确!你申请错了

您使用了错误hpp文件中的包含保护:

#ifndef DECODE_H_INCLUDED
map.hpp
中,它来自
decode.hpp
。它应该是

#ifndef MAP_H_INCLUDED

我认为问题与Map.hpp中的这些宏定义有关

#ifndef DECODE_H_INCLUDED
#define DECODE_H_INCLUDED
它们似乎与Map.hpp之前包含的decode.hpp中使用的定义相同

考虑到至少这个构造函数是错误的,这是没有意义的,不会编译

Map::Map(){
    int i = 0;
    int m_obstacle[80000] = {0};
    std::vector <int> m_posPlayer(0);
    std::vector <std::string> m_namePlayer(0);
    std::vector <sf::IpAddress> m_addressPlayer(0);
    std::string m_stringObstacle = "";
    for (i=0;i<80000;i++){
        m_stringObstacle += m_obstacle[i] + "+";
   }
}
这是错误的,没有意义

也是数据成员

int m_obstacle;

像标量对象一样声明。您不能像数组一样在构造函数中重新声明它。

我认为问题与Map.hpp中的这些宏定义有关

#ifndef DECODE_H_INCLUDED
#define DECODE_H_INCLUDED
它们似乎与Map.hpp之前包含的decode.hpp中使用的定义相同

考虑到至少这个构造函数是错误的,这是没有意义的,不会编译

Map::Map(){
    int i = 0;
    int m_obstacle[80000] = {0};
    std::vector <int> m_posPlayer(0);
    std::vector <std::string> m_namePlayer(0);
    std::vector <sf::IpAddress> m_addressPlayer(0);
    std::string m_stringObstacle = "";
    for (i=0;i<80000;i++){
        m_stringObstacle += m_obstacle[i] + "+";
   }
}
这是错误的,没有意义

也是数据成员

int m_obstacle;

像标量对象一样声明。您不能像数组一样在构造函数中重新声明它。

您确定map.hpp可用于编译器并且确实包含在cpp文件中吗?您可以演示如何调用编译器吗?您应该将
#include
语句放在include卫士中。如果您不使用Windows环境文件名重要信息:
Map.hpp
不是
Map.hpp
您确定Map.hpp可供编译器使用并且确实包含在cpp文件中吗?您可以演示如何调用编译器吗?您应该将
#include
语句放在include卫士中。如果您不使用Windows环境,文件的名称很重要:
Map.hpp
不是
map.hpp
谢谢!这是正确的方法。我只是从另一个文件复制了包含保护,但我没有注意到它是名称特定的。谢谢!这是正确的方法。我只是从另一个文件复制了包含保护,但我没有注意到它是名称特定的。@Xavier59代码有其他问题。请参阅我更新的post.我这里没有编译错误。顺便说一句,我现在没有尝试这个类,所以可能会发生这种情况。毫无疑问,这是一个问题,您可能会指出我不能在字符串中附加整数。那么我应该使用itoa,然后将我的字符*强制转换为字符串吗?或者有最简单的方法吗?此外,“+=”接受?谢谢。@Xavier59没有编译错误,因为代码在形式上是有效的,但它没有达到预期效果。@@Xavier59,例如,在这条语句中,m_StringBarrier++=m_Barrier[i]+“+”;您得到一个包含8000个字符“+”的本地字符串,该字符串在退出构造函数后将被删除。此语句的含义是什么?这正是我想要的。我希望类似于“1+5+4+2+4+…+”但可以肯定的是,我必须将int传递给string,而不是像我的代码中那样。我想构建一个字符串,以便通过套接字将“映射”发送到客户端。每个数字都是一个块的id。“+”是一个分隔符,因为id可以优于9。我不知道这是否是最好的方法,所以如果你有其他的假设,我愿意接受;)@Xavier59代码还有其他问题。请参阅我更新的帖子。我在这里没有编译错误。顺便说一句,我现在还没有尝试这个类,所以这可能会发生。毫无疑问,我在那里这是一个问题,您可能会指出我不能在字符串中附加整数。那么我应该使用itoa,然后将我的字符*转换为字符串吗?或者有最简单的方法吗?此外,“+=”接受?谢谢。@Xavier59没有编译错误,因为代码在形式上是有效的,但它没有达到预期效果。@@Xavier59,例如,在这条语句中,m_StringBarrier++=m_Barrier[i]+“+”;您得到一个包含8000个字符“+”的本地字符串,该字符串在退出构造函数后将被删除。此语句的含义是什么?这正是我想要的。我希望类似于“1+5+4+2+4+…+”但可以肯定的是,我必须将int传递给string,而不是像我的代码中那样。我想构建一个字符串,以便通过套接字将“映射”发送到客户端。每个数字都是一个块的id。“+”是一个分隔符,因为id可以优于9。我不知道这是否是最好的方法,所以如果你有其他的假设,我愿意接受;)