Warum vector aber list nicht



  • Servus

    hier hängts:

    struct FileObject
    {
    string strPath;
    string strName;
    bool bIsDir;
    vector<FileObject> Subobjects;// Nur falls bIsDir true ist
    };

    des geht aber des nich:

    struct FileObject
    {
    string strPath;
    string strName;
    bool bIsDir;
    list<FileObject> Subobjects;// Nur falls bIsDir true ist
    };

    und jetzt frag ich mich warum, bei der zweiten version heißt es dass hier:

    c:\programme\microsoft visual studio\vc98\include\list(29) : error C2079: '_Value' uses undefined struct 'FileObject'
    e:\cpp\nitroflash\nitroflash dirtohtml\main.h(22) : see reference to class template instantiation 'std::list<struct FileObject,class std::allocator<struct FileObject> >' being compiled
    c:\programme\microsoft visual studio\vc98\include\functional(185) : error C2079: 'value' uses undefined struct 'FileObject'
    c:\programme\microsoft visual studio\vc98\include\list(285) : see reference to class template instantiation 'std::binder2nd<struct std::not_equal_to<struct FileObject> >' being compiled
    e:\cpp\nitroflash\nitroflash dirtohtml\main.h(22) : see reference to class template instantiation 'std::list<struct FileObject,class std::allocator<struct FileObject> >' being compiled
    Error executing cl.exe.

    sehr sehr strange für diese art der verwednung der struktur wäre list nämlich schzneller gewesen, aber es geht irgendwie nich.



  • Hallo,
    das ist definitiv ein Bug des Compilers/der verwendeten STL.



  • Des is aber die Standart STL, die bei VC6 dabei ist, weißt du genaueres, bist du dir sicher, dass des ein bug ist???



  • Original erstellt von Nitromaus:
    Des is aber die Standart STL, die bei VC6 dabei ist, weißt du genaueres, bist du dir sicher, dass des ein bug ist???

    Die STL beim VC6 ist nicht die beste die es gibt.



  • bist du dir sicher, dass des ein bug ist

    Jup. Solange kein Objekt von FileObject erzeugt wird, gibt es keinen Grund list zu instanziieren. Es gibt also keinen Grund dafür, dass FileObject hier ein vollständiger Typ sein muss.



  • Hmm gibt es nen Patch zur VC6 STL, dass es nicht die beste is is mir klar, bloß meine anwendung soll sehr klein bleiben, und ich kann keine mehre mb große andere stl mitschleppen. also kommt STLport oder ähnliches nicht in Frage. Wecleh Alternativen kennt ihr übrigeds noch?

    [ Dieser Beitrag wurde am 29.04.2003 um 21:00 Uhr von Nitromaus editiert. ]



  • Es gibt einen Fixpack für die MSVC 6 STL, aber ich bezweifle, dass der dir hier was hilft, weil er glaub er mehr Fehler an den verwendeten Algorithmen verbessert.
    Kannst aber ja mal installieren (einfach Header entpacken) und gucken, obs was bringt.

    ChrisM



  • alle service packs von ms lassen sich nich runterladen, der will einfach nich connecten hat jemand nen anderen link parat?


Anmelden zum Antworten