4 Stimmen

Kann ich eine for-Schleife erstellen, die mehrere Typendeklarationen enthält?

Zum Beispiel:

Gibt es irgendetwas, was ich tun kann, um dies zu ermöglichen?

for(TiXmlElement * pChild = elem->First(), int i=0; // note multiple type declarations
    pChild; 
    pChild=pChild->NextSiblingElement(), i++) // note multiple types
{
    //do stuff
}

Vielleicht gibt es eine boost Kopfzeile?

8voto

Maxim Egorushkin Punkte 125210

Nö.

Wenn Sie den Geltungsbereich der Variablen auf die Schleife beschränken wollen, fügen Sie einfach einen weiteren Geltungsbereich hinzu:

{
    TiXmlElement * pChild = elem->First();
    int i = 0;
    for(; pChild; pChild=pChild->NextSiblingElement(), i++)
    {
        //do stuff
    }
}

5voto

DevSolar Punkte 63096

Blöcke müssen nicht mit Funktionen oder Konditionalen verbunden sein. Sie können jedes Codestück mit einem Block umgeben, um den Geltungsbereich temporärer Variablen auf diesen Block zu beschränken.

{
    TiXmlElement * pChild;
    int i;
    for ( pChild = elem->First(), i = 0;
          pChild;
          pChild = pChild->NextSiblingElement(), ++i )
    {
        // do stuff
    }
}

2voto

L. F. Punkte 17912

Seit C++17 ist die Einführung mehrerer Variablen mit strukturierte Bindungen :

// multiple type declarations
for (auto [pChild, i] = std::tie(elem->First(), 0); pChild; pChild = pChild->NextSiblingElement(), ++i) {
    // ...
}

pChild est un TiXmlElement* y i ist ein int wie erwartet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X