Array aus Maps bzw. Suche nach geeigneter Datenstruktur



  • Hallo erstmal,

    bin relativ neu was MFC und Visual C++ Programmierung angeht und habe folgendes Problem:

    In einer Funktion bekomme ich auf eine Suchanfrage eine unstrukturierte Liste von x-Treffern. Jeder Treffer besteht aus y-Einträgen, in Form eines Attributes und des dazugehörigen Wertes. Während ich schon weiß, wieviele Treffer meine Suchanfrage liefert habe ich aber keine Ahnung, wieviele Einträge jeder Treffer besitzt.

    Jetzt würde ich gerne die Ergebnisse der Suchanfrage aus der Funktion herausführen und zwar in der Art, dass man zumindest über das Attribut als einen Index auf die Ergebnisliste zugreifen kann. Gedanklich dachte ich an ein Konstrukt aus einem Array von Maps...

    Folgendes habe ich bisher probiert:

    typedef CMap<CString, LPCTSTR, CString, CString&> CLDAPMap;
    typedef CArray<CLDAPMap, CLDAPMap&> CLDAPResultArray;
    
    CLDAPResultArray data;
    CLDAPMap map; 
    
    map.SetAt(pAttribute, value);
    
    data.SetSize(numberOfEntries);
    data.Add(map);
    

    aber leider mit folgendem Ergebnis bisher:

    error C2248: "CObject::operator =": Kein Zugriff auf private Member, dessen Deklaration in der CObject-Klasse erfolgte.
    1> d:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(554): Siehe Deklaration von 'CObject::operator ='
    1> d:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(524): Siehe Deklaration von 'CObject'
    1> Diese Diagnose trat in der vom Compiler generierten Funktion "CMap<KEY,ARG_KEY,VALUE,ARG_VALUE> &CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::operator =(const CMap<KEY,ARG_KEY,VALUE,ARG_VALUE> &)" auf.
    1> with
    1> [
    1> KEY=CString,
    1> ARG_KEY=LPCTSTR,
    1> VALUE=CString,
    1> ARG_VALUE=CString &
    1> ]

    Was mache ich falsch oder würdet ihr ganz anders an die Sache rangehen?

    Mfg
    Scead


  • Mod

    Vergiss hier die MFC.
    Nimm die STL.

    typedef std::map<CString> CLDAPMap;
    typedef std::vector<CLDAPMap> CLDAPResultArray;
    


  • Besten Dank, so gehts 👍

    typedef std::map<CString,CString> CLDAPMap;
    typedef std::vector<CLDAPMap> CLDAPResultArray;
    

    Scead


Anmelden zum Antworten