-3

可能重复:
我必须在哪里以及为什么要放置“模板”和“类型名称”关键字?

我有一个像下面这样的模板类

  template <class Key, class Object>
  class  TObjectRegistery
  {
  public:
     typedef map<const Key,  Object*> ObjectMap;

     void AddObject(Object *obj){
        objectMap_[obj.code()] = obj;
     }
  private:
     ObjectMap  objectMap_;
     }

我想在 之外运行迭代TFactory,然后我想向类中添加两个成员函数。

  ObjectMap::iterator xbegin(){
     return objectMap_.begin();
  }

但我得到一个我错过的错误;在 xbegin 之前取消定义 ObjectMap::iterator

  "missing ';' before identifier 'xbegin'"

为什么会这样?我该如何解决?如果这是进行课外迭代的好方法?

4

1 回答 1

5

您还需要在 ObjectMap 之前使用 typename 关键字,因为它是模板参数的派生类型:

typename ObjectMap::iterator xbegin(){
    return objectMap_.begin();
}
于 2012-08-27T14:30:45.420 回答