¿Cómo podría hacer una función con banderas como la forma CreateWindow de Windows' (... estilo | estilo, ...), por ejemplo, una función createnum:¿Cómo hacer funciones con parámetros de indicador? (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);
Es esto posible, y ¿si es así, cómo?
¿Tal vez podría hacer que su enumeración sea más larga, para aclarar que TIENE que ser potencias de dos? – KeatsPeeks
+1. como un lado, no es necesario comparar la bandera con "== MyFlags :: EVEN", ya que será cero o distinto de cero, lo que automáticamente coacciona a bool bastante bien. – rmeador
No creo que sea posible pasar dos (o más) banderas usando | operador si usa este enfoque. – danadam