C++/CLI-Schalter auf der Schnur
In anderen .NET Sprachen wie C# können Sie die Schalter auf ein string-Wert:
string val = GetVal();
switch(val)
{
case "val1":
DoSomething();
break;
case "val2":
default:
DoSomethingElse();
break;
}
Aber dies scheint nicht der Fall zu sein, in C++/CLI
System::String ^val = GetVal();
switch(val) //Compile error
{
//Snip
}
Gibt es ein spezielles Schlüsselwort oder eine andere Möglichkeit, um diese Arbeit für C++/CLI, wie das in C#?
- Ich glaube auch, das gilt für Java, d.h., keine Umschaltung auf den Saiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich kann man alles verwenden, was andere als Ganzzahlen (manchmal gekennzeichnet durch Integrale Typen), wenn die getesteten Objekte definiert, Konvertierung zu integer.
String-Objekt nicht.
Allerdings könnte man eine Karte erstellen mit string-Schlüsseln (überprüfen, dass der Vergleich ist gut verarbeitet) und Zeiger auf Klassen, die die Implementierung einer Schnittstelle, die als Werte:
Etwas zu implementieren, aber gut gestaltet.
Du sicherlich nicht verwenden können, etwas anderes als einen integer in einen
switch
- Anweisung in C /C++. Der einfachste Weg, dies zu tun in C++ ist die Verwendung und if ... else-Anweisung:Edit:
Ich habe gerade entdeckt, Sie bat über C++/CLI - ich weiß nicht, ob das oben noch gilt; es bringt sicherlich in ANSI C++.
Ich denke ich habe eine Lösung gefunden, die auf codeguru.com.
Ich weiß, meine Antwort kommt ein bisschen zu spät, aber ich denke, das ist eine gute Lösung.