我有一个类似下面的模板类
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_;
}
Run Code Online (Sandbox Code Playgroud)
我想在外面运行迭代TFactory,然后我想在类中添加两个成员函数.
ObjectMap::iterator xbegin(){
return objectMap_.begin();
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个我错过的错误; 在xbegin之前,像undefine ObjectMap :: iterator
"missing ';' before identifier 'xbegin'"
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我该怎么办呢?如果这种好方法可以在课外进行迭代?
小智 5
在ObjectMap之前还需要typename关键字,因为它是模板参数的派生类型:
typename ObjectMap::iterator xbegin(){
return objectMap_.begin();
}
Run Code Online (Sandbox Code Playgroud)