Ich möchte meine eigenen numerischen Typen deklarieren, genau wie unsigned int, aber ich möchte nicht, dass die Typen implizit konvertiert werden. Dies habe ich zuerst versucht: typedef unsigned int firstID; typedef unsigned int secondID;
aber dies ist nicht gut, da die beiden Typen sind nur Synonyme für unsigned int, so sind frei austauschbar.
Ich möchte, dass dies einen Fehler verursacht:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
aber das hier ist in Ordnung:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Mein Grund ist, dass Funktionsargumente stark typisiert sind, z. B.:
void f( firstID, secondID ); // instead of void f(unsigned int, unsigned int)
Was ist der Mechanismus, nach dem ich suche?
Gracias
Si
1 Stimmen
Es gibt keine Möglichkeit, dies zu tun, außer man macht die Typen zu tatsächlichen Klassen oder Strukturen.
0 Stimmen
Wurde diese Frage nicht bereits gestellt? stackoverflow.com/questions/376452/