下面是我程序中的一个头文件。我收到一个编译错误,说我在partyPack 之前缺少了一个分号。没有遗漏。还有另外两个错误,但我不记得它们是什么。
真正让我困惑的是我注释掉了 Pack partyPack;编译(失败,因为它在.cpp中被引用),当我取消注释并再次尝试时,它编译并运行。
什么可能导致这种行为?
#ifndef PARTY_INTERFACE
#define PARTY_INTERFACE
#include "utility.h"
#include "Pack.h"
#include "Shop.h"
#include "Assets.h"
struct member
{...};
class Party
{
private:
const static int TEAMSIZE = 4;
member team[TEAMSIZE];
Pack partyPack;
const Inventory* itemList;
public:
Party(const Inventory* inputList);
void newTeam();
bool load();
bool save();
void findItem();
const void showParty();
const void showInventory();
void addToInventory();
~Party(void);
};
#endif
更新 1 我已经能够复制错误...下面是一个 github 存储库的链接,其中包含程序文件以供参考,随时下载和调试等。在 VC++ 2010 中为我编译的最后一次提交。我已经注释掉需要 windows.h 的部分,它应该可以普遍编译......我希望。
https://github.com/dsball/RPGShop/tree/master/RPGShop
更新 2 我已将问题隔离为任何时候在 Party.h 或 Party.h 本身包含的头文件之一中发生更改。输入 int a 的简单动作;并立即删除它(这两个步骤之间没有任何内容)会导致错误。错误如下:
错误 1 错误 C2146:语法错误:缺少 ';' 在标识符“partyPack”party.h 30之前
错误 2 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int party.h 30
错误 3 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int party.h 30
然后我在 Pack.h //Pack partyPack 中注释第 30 行,编译/开始调试(失败),取消注释同一行并重试,它运行得很好。
更新 3 在得知有 Pack() pragma 后,我已将 Pack 替换为 Backpack,但问题仍然存在。
正如其他人所提到的,似乎确实有一些东西干扰了派对的定义,但我找不到它是什么。