Wie könnte ich eine Funktion mit Fahnen wie, wie Windows' Create (... style | Stil, ...), zum Beispiel einer createnum Funktion:Wie mache ich Funktionen mit Flagparametern? (C++)
int CreateNum(flag flags) //???
{
int num = 0;
if(flags == GREATER_THAN_TEN)
num = 11;
if(flags == EVEN && ((num % 2) == 1)
num++;
else if(flags == ODD && ((num % 2) == 0)
num++;
return num;
}
//called like this
int Number = CreateNum(GREATER_THAN_TEN | EVEN);
Ist dies möglich, und Wenn das so ist, wie?
Vielleicht könnten Sie Ihre Enum länger machen, um klar zu machen, es muss Potenzen von zwei sein? – KeatsPeeks
+1. Nebenbei, es ist unnötig, das Flag mit "== MyFlags :: EVEN" zu vergleichen, da es entweder Null oder nicht Null ist, was automatisch dazu führt, dass es sich ziemlich gut boolt. – rmeador
Ich glaube nicht, dass es möglich ist, zwei (oder mehr) Flags mit | zu übergeben wenn Sie diesen Ansatz verwenden. – danadam