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

时间:2014-06-03 21:59:10

标签: c++

我有一个班级定义:

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

2 个答案:

答案 0 :(得分:4)

没有名为DataBase::vectorDataBase::map的类/类型。

尝试。

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

};

答案 1 :(得分:0)

  

我做错了什么?

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

因此,请检查您是否已包含所有标题文件,检查拼写错误等。