Problem mit konstantem Wert im switch case
-
class myClass { public: int aValue() { return 10; } }; int main() { myClass example; const int value = example.aValue(); const int anotherValue = ...; //Assigning some value here switch(anotherValue) { case value: //do stuff... break; } return 0; }
"Ausdruck wurde nicht zu einer Konstanten ausgewertet"
Wo liegt der Fehler?
-
Value muss zur Compilezeit konstant sein.
-
Der Case ausdruck muss, meines Wissens nach, zur Compliezeit bekannt sein und kann nicht der Rückgabewert einer Funktion sein.
Sprich funktionieren nur sachen wie
case 5: case ALPHA: //ALPHA muss hier z.B. ein element eines enums sein etc.
-
Schau dir mal
constexpr
an.Also:
constexpr int aValue() { return 10; } ... constexpr int value = example.aValue(); switch(anotherValue) { case value: //do stuff... break; }
Übrigens sehr spannend, was inzwischen alles mit constexpr geht. Jason Turner hat in seinen beiden letzten Episonden - meiner Meinung nach - ziemlich coole Dinge getan (compile time random maze generation mit path finding): https://www.youtube.com/watch?v=3SXML1-Ty5U
-
Sieht interessant aus...ich werd mir das mal genauer angucken. Danke fürs Feedback!
-
Wozu const int was zuweisen?
int x = 0; cin >> x; switch( x ) { case 5: cout << "fünf"; break; default: cout << "nicht fünf"; break; }
-
@EOP
Ich hab keinen Plan was du mit deinem Beitrag sagen willst.