我有一个模板类:
template <class identifier,class registeredObject>
class FxPairRegistry : public FxRegistry<pair<identifier,registeredObject> >
{
public:
registeredObject GetEntry(identifier, FxBool assertValue = true);
void RegisterInOrder(const pair<identifier,registeredObject> &ob);
typedef typename std::vector<pair<identifier,registeredObject> >::iterator iter;
};
Run Code Online (Sandbox Code Playgroud)
然后我有:
template <class identifier,class registeredObject>
registeredObject FxPairRegistry<identifier,registeredObject>::GetEntry(identifier id, FxBool
assertValue)
{
for (iterator iter = mRegistryList.begin(); iter != mRegistryList.end(); iter++)
{
if ((*iter).first == id)
{
return (*iter).second;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到的错误如下:
error: missing template arguments before 'iter'
error: expected `;' before 'iter'
error: expected primary-expression before '!=' token
error: 'mRegistryList' was not declared in this scope
error: expected primary-expression before '++' token
error: expected primary-expression before ')' token
error: expected primary-expression before ')' token
error: missing template arguments before 'iter'
error: expected `;' before 'iter'
error: expected primary-expression before '!=' token
error: 'mRegistryList' was not declared in this scope
error: expected primary-expression before '++' token
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么,但我确实生锈了一点......
看来在这里,你是typedef'ing一个叫做的类型iter:
typedef typename std::vector<pair<identifier,registeredObject> >::iterator iter;
Run Code Online (Sandbox Code Playgroud)
然后在这里:
iterator iter = mRegistryList.begin()
Run Code Online (Sandbox Code Playgroud)
您正在尝试定义一个名为 iter type 的变量iterator,该变量(来自您显示的代码)不是任何存在类型的名称.
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |