好吧,我正在和一群学生一起使用Visual Studio 2015编写游戏。
我在文件DataTypes.h和DataTypes.cpp中定义了一个枚举类,但是当我尝试使用第三个文件AiFSM.cpp时,我收到了一个通用编译器错误:
“objectType没有成员'TYPE_ENEMY_SHIP'”
如果我使用枚举而不是枚举类,我会遇到同样的问题,除了错误抛出:
“标识符'TYPE_ENEMY_SHIP'未定义。”
但是,当我在AiFSM.cpp中包含枚举的定义时,代码会编译。这给了我的印象,我的包含是错误的来源,但我已经重新检查,然后重新输入它们(以防万一),但无济于事。
请问有人可以提出导致问题的原因吗?
DataTypes.h:
#pragma once
#ifndef DATATYPES_H //Duel header guard to support other compilers
#define DATATYPES_H
enum class objectType;
DataTypes.cpp:
#include "stdafx.h"
#include "DataTypes.h"
enum class objectType {
...(Long list of enums omitted)
//NOW we have NPC classes
TYPE_ENEMY_SHIP,
TYPE_ENEMY_STATION,
...
TYPE_DESTROYED
};
AiFSM.h:
#pragma once
#ifndef AIFSM_H
#define AIFSM_H
#include "stdafx.h"
#include "DataTypes.h"
void enterFSM(objectType* type, FSMData* fsmData);
#endif
最后,AiFSM.cpp:
#include "stdafx.h"
#include "DataTypes.h"
#include "AiFSM.h"
//Passes the data onto the appropriate state
void enterFSM(objectType* type, FSMData* fsmData) {
switch (*type) {
case objectType::TYPE_ENEMY_SHIP:
{break;} //TODO: Implement code
...(More case statements with identical errors.)
}
}
答案 0 :(得分:1)
您需要将完整的枚举类声明移动到DataTypes.h头文件。