Quiero declarar mis propios tipos numéricos, exactamente como unsigned int, pero no quiero que los tipos se conviertan implícitamente. Intenté esto primero: typedef unsigned int firstID; typedef unsigned int secondID;Declarar tipos sin conversión implícita en C++
pero esto no es bueno ya que los dos tipos son solo sinónimos de unsigned int, por lo que se pueden intercambiar libremente.
me gustaría que esto causará un error:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
pero esto a estar bien:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Mi razón es para que los argumentos de funciones están fuertemente tipado, por ejemplo:
void f(firstID, secondID); // instead of void f(unsigned int, unsigned int)
¿Cuál es el mecanismo que estoy buscando?
Gracias
de Si
A menos que los tipos sean clases o estructuras reales, no hay forma de hacerlo. –
¿No fue esto lo que se le preguntó? http://stackoverflow.com/questions/376452/enforce-strong-type-checking-in-c-type-strictness-for-typedefs – Manuel