"没有模板参数的类std :: map"错误

Mat*_*att 2 c++ gcc stl

我不得不说我不是使用STL的专家.这是我的问题,我有一个名为LdapClientManager的类,它维护了许多由ID管理的LDAP客户端.持有LdapClients的容器被声明为成员变量ie

typedef std::map<int, LdapClient *> LdapClientMap;
LdapClientMap _ldapClientMap;
Run Code Online (Sandbox Code Playgroud)

以下函数无法使用错误进行编译:

LdapClient * LdapClientManager::getLdapClient(unsigned int templateID)
{
    // Do we have an LdapClient
    LdapClientMap::const_iterator it = _ldapClientMap.find(templateID);
    if (it == std::map::end) {
        // no existing client, lets create it
        LdapClient * ldapClient = new LdapClient();
        if (ldapClient == NULL) {
            // TODO: handle out of memory condition
        }

        _ldapClientMap[templateID] = ldapClient;
        return ldapClient;
    }

    return it->second;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是我在编译时遇到以下错误,这是什么意思.我还没有在谷歌找到解决方案.

LdapClientManager.cc:在LdapClient* LdapClientManager::getLdapClient(unsigned int)': LdapClientManager.cc:33:没有模板参数的情况下使用的成员函数模板类std :: map'

ava*_*kar 11

替换std::map::end_ldapClientMap.end().此外,new永远不会返回0,如果分配失败,它会抛出异常.

请注意,程序可以缩短.

LdapClient * LdapClientManager::getLdapClient(unsigned int templateID)
{
    LdapClient *& value = _ldapClientMap[templateID];
    if (value == 0)
        value = new LdapClient();
    return value;
}
Run Code Online (Sandbox Code Playgroud)