我有一个班级定义:
using namespace std;
class DataBase
{
private:
....
typedef DataBase::vector<Object> objectVector;
typedef DataBase::map<ObjectType, objectVector> objectMap;
objectMap objects;
....
};
和实施文件:
....
void DataBase::createObject(const ObjectType type, ifstream& strm)
{
switch(type)
{
case Fiction:
objectVector fic = objects[Fiction]; //complains about unknown type
break;
....
}
....
我收到错误unknown type name 'objectVector'
。我无法得到投诉的权利。我究竟做错了什么?
修改 我的错误不包括标题。因此,对于有类似错误的人,请检查您是否已为typedef包含所有需要的类型。
答案 0 :(得分:4)
没有名为DataBase::vector
或DataBase::map
的类/类型。
尝试。
class DataBase
{
private:
....
typedef std::vector<Object> objectVector;
typedef std::map<ObjectType, objectVector> objectMap;
objectMap objects;
....
};
答案 1 :(得分:0)
我做错了什么?
由于某种原因,编译器没有找到objectVector
的声明。
如果他发现了一个不是定义的声明(如类的前向声明),他会抱怨你试图定义一个不完整类型的对象。
因此,请检查您是否已包含所有标题文件,检查拼写错误等。