如何在类定义和实现中使用typedef

how to use typedef in class definition and implementation

本文关键字:typedef 实现 定义      更新时间:2023-10-16

我有一个类定义:

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中所有需要的类型。

没有DataBase::vectorDataBase::map类/类型

试一试。

class DataBase
{
private:
    ....
    typedef std::vector<Object> objectVector;
    typedef std::map<ObjectType, objectVector> objectMap;
    objectMap objects;
    ....
};

我做错了什么?

编译器由于某种原因没有找到objectVector的声明。如果他发现了一个不是定义的声明(比如一个类的前向声明),他会抱怨你试图定义一个不完整类型的对象。

检查你是否包含了所有的头文件,检查是否有拼写错误等等