我目前正在用C ++开发一个文本冒险游戏,我正在尝试使用枚举来节省代码。但是,我收到了这些错误:
1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误C2236:意外 令牌'枚举'。你忘记了';'吗?
1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误C2143:语法错误: 失踪 ';'在'{'
之前1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误 C2447:'{':缺少函数头(旧式正式列表?)
以下是相关代码:
#include "Header.h"
enum gen_dirs {north, east, south, west};
enum gen_rooms {entrance, bathroom, livingroom, diningroom, abedroom, cupboard, kitchen, cbedroom};
...
相关的头文件:
#define HEADER_H
#include <iostream> // For cin and cout
#include <string> // For strings
#include <vector> // For vectors (arrays)
using namespace std;
struct RoomStruct
{
// The room the player is currently in, and its interactive objects.
string roomName;
string size;
bool rustyKeyIn;
bool goldKeyIn;
bool copperKeyIn;
bool torchIn;
bool toyIn;
bool leverIn;
bool oldCheeseIn;
bool toyBoxIn;
bool skeletonIn;
bool ghostIn;
}
有人能够弄清楚出了什么问题,因为据我所知(并通过查看其他冒险游戏脚本),这应该有效。
编辑:我是一个大白痴。在标题的最后,我在}之后插入了一个分号,现在运行正常。很抱歉浪费你的时间......答案 0 :(得分:1)
我认为你没有显示所有标题。似乎问题出在标题中,因为枚举定义中没有任何语法错误。
尝试编译具有此标题和空主函数的程序。
编辑:您忘记在结构定义后放置分号。
答案 1 :(得分:1)
您在;
}
之后忘记了RoomStruct
。
#define HEADER_H
#include <iostream> // For cin and cout
#include <string> // For strings
#include <vector> // For vectors (arrays)
using namespace std;
struct RoomStruct
{
// The room the player is currently in, and its interactive objects.
string roomName;
string size;
bool rustyKeyIn;
bool goldKeyIn;
bool copperKeyIn;
bool torchIn;
bool toyIn;
bool leverIn;
bool oldCheeseIn;
bool toyBoxIn;
bool skeletonIn;
bool ghostIn;
}; //<---------------------------------
-edit-在C中你可以写struct RoomStruct {int a, b; } room1, room2;
所以你的代码中发生了什么,它认为你正在尝试声明一个名为enum
的变量,这是一个保留的关键字
答案 2 :(得分:1)
struct
定义需要以分号结尾(即在最后一个大括号之后)。
答案 3 :(得分:0)
你在结构定义的末尾缺少一个分号 - 头文件的最后一行