Me gustaría usar algo como typedef en mis programas C++ para mejorar la seguridad del tipo.typesafe typedef en C++
Como un ejemplo, supongamos que tengo dos funciones
void function1(unsigned idOfType1);
void function2(unsigned idOfType2);
entonces puedo pasar erróneamente idOfType2 a FUNCTION1 y viceversa. Quiero que el compilador me dé un error en este caso. Soy consciente de que podría envolver estos unsigned en una estructura, pero luego tendría que proporcionar un nombre de campo y usar .
para acceder a ellos, lo cual es un poco incómodo. ¿Hay una buena forma de evitar esto?
Editar: Por lo que sé typedef
no funcionará para este fin, ya que es solo una abreviatura de un tipo y no se utilizará para la verificación de tipos.
Enums funcionan bien en su caso ... –
@AlexanderPavlov se preocupan por elaborar, no es obvio para mí ... – Paul
@Paul: puede escribir algo como 'enum Type1 {dummy0 = 1, dummy1 = 1 << 1, dummy2 = 1 < <2, ..., dummy31 = 1 << 31}; ', y suponiendo que' unsigned' es un tipo de 32 bits en su implementación, entonces el resultado es una enumeración que puede contener cualquier valor de 'unsigned'. Entonces 'void function1 (Type1 id)' no aceptará un 'Type2', porque las enum no son implícitamente convertibles entre sí. –