Eugh,一天有2个问题。我有一个你听到这么多的糟糕日子。我一直在组织我的小项目,以减少它的混乱。这是在开发的开始,所以没有太多的进展。我在下面有这个标题
#pragma once
#include <string>
class Game_Map
{
private:
int map_width;
int map_height;
string map_data [50][50]
public:
Game_Map(int default_width = 20,int default_height = 20)
~Game_Map()
};
现在据我所见,应该没有任何问题。我避免使用“使用”,我保持编程直到现在基本以防止外部干扰。但我是100%的时间得到“map.h:9:9:错误:'字符串'没有命名类型”
我确信我错过了一些东西。谁能看到我出错的地方?
答案 0 :(得分:9)
更改
string map_data [50][50]
到
std::string map_data [50][50];
这是必要的,因为string属于std名称空间。
不要在头文件中使用“using”声明或指令。
答案 1 :(得分:1)
使用完全限定名称(首选)作为
std::string map_data [50][50];
或使用声明
using std::string;
string map_data [50][50];
或使用指令
using namespace std;
string map_data [50][50]'
答案 2 :(得分:0)
你似乎在某些行的末尾错过了一些分号:
class Game_Map
{
...
string map_data [50][50] // Missing ;
public:
Game_Map(int default_width = 20,int default_height = 20) // Missing ;
~Game_Map() // Missing ;
};
此外,当您#include <string>
时,标识STL字符串类的“完整名称”为std::string
(因为STL字符串类位于std::
名称空间下)。
所以,只需在此行中使用 std::string
代替string
:
std::string map_data[50][50];
请注意,在头文件中,您不应使用“using directives”(例如using namespace std;
),以避免“污染”#include您的头文件的客户端的全局命名空间。
只需在头文件中指定带有std::
前缀的STL类名称。