"Klasse std::map verwendet, die ohne template-Parameter" - Fehler

Ich würde sagen, ich bin kein Experte in der Verwendung der STL. Hier ist mein problem, ich habe eine Klasse Namens LdapClientManager, die behauptet, eine Reihe von LDAP-clients, die verwaltet werden von ID. Der Behälter mit der LdapClients ist deklariert als eine member-variable, d.h.

typedef std::map<int, LdapClient *> LdapClientMap;
LdapClientMap _ldapClientMap;

Folgende Funktion schlägt fehl, um die Kompilierung mit der Fehlermeldung:

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;
}

Leider bekomme ich die folgende Fehlermeldung zur compile-Zeit, was bedeutet es. Ich habe noch keine Lösung gefunden in google, wie noch.

LdapClientManager.cc: In member function LdapClient*
LdapClientManager::getLdapClient(unsigned int)':
LdapClientManager.cc:33:
template-Klasse std::map' verwendet werden, ohne die template-Parameter

  • Nur ein Hinweis, neu nicht NULL zurückgeben, in der out-of-memory Bedingungen, (es sei denn, Sie sind mit alten Compilern wie VC6). Es wirft std::bad_alloc exception.
InformationsquelleAutor Matt | 2009-07-22
Schreibe einen Kommentar