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<>._MyfirstAuch 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<>._MyfirstDie 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);