-3

重複の可能性:
「template」および「typename」キーワードをどこに、なぜ配置する必要があるのですか?

以下のようなテンプレートクラスがあります

  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たいので、2つのメンバー関数をクラスに追加したいと思います。

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

しかし、私は私が行方不明であるというエラーを受け取ります; undefine ObjectMap::iteratorのようなxbeginの前

  "missing ';' before identifier 'xbegin'"

なぜこれが起こるのですか?どうすれば修正できますか?クラス外で反復を行うためのこの良い方法があれば?

4

1 に答える 1

5

テンプレートパラメータの派生型であるため、ObjectMapの前にtypenameキーワードも必要です。

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