Alte Syntax verstehen



  • Hallo

    Ich bin gerade dabei ein mir unbekanntes MFC Projekt geschrieben in Visual Studio 6 oder 7.1 weiß ich nicht genau auf VS 8 zu konvertieren. Dabei ist allerlei Syntax zu finden, die verständlicherweis eKompilerfehler erzeugt. So zBSp nciht erlaubte Zugriffe auf protected Methoden wie

    std::string._Myptr oder 
    std::vector<>._Myfirst
    

    Auch eine mir gänzlich unbekannte Art des Vektorzugriffs ist darunter, die so in VS 2005 nicht mehr funktioniert.

    m_configuration->m_presets[iSelected].vCommands.erase(&m_configuration->m_presets[iSelected].vCommands[i]);
    

    Wie kann es sein, dass dieser Code jemals funktioniert hat. Bzw. gibt es Präprozessoranweisungen mit denen dieser Code auch in VS 2005 kompiliert werden kann ?

    lg Jakob



  • _yak schrieb:

    Hallo

    Ich bin gerade dabei ein mir unbekanntes MFC Projekt geschrieben in Visual Studio 6 oder 7.1 weiß ich nicht genau auf VS 8 zu konvertieren. Dabei ist allerlei Syntax zu finden, die verständlicherweis eKompilerfehler erzeugt. So zBSp nciht erlaubte Zugriffe auf protected Methoden wie

    std::string._Myptr oder 
    std::vector<>._Myfirst
    

    Die beiden Elemente sind private Daten der jeweiligen Klassen - ist sowieso verwunderlich, daß jemand da von außen rankommt. Sicherer (und portabler) bist du wohl mit string.c_str() bzw. vector<>.begin().

    Wie kann es sein, dass dieser Code jemals funktioniert hat. Bzw. gibt es Präprozessoranweisungen mit denen dieser Code auch in VS 2005 kompiliert werden kann ?

    Vector-Iteratoren werden häufig als Pointer realisiert, dann funktioniert dieser Code. Aber korrekterweise sollte man sich auf offiziellem Weg einen Iterator in den vector<> besorgen:

    m_configuration->m_presets[iSelected].vCommands.erase(m_configuration->m_presets[iSelected].vCommands.begin()+i);
    

Anmelden zum Antworten