Ich möchte meine eigenen numerischen Typen, genau wie unsigned int, deklarieren, aber ich möchte nicht, dass die Typen implizit konvertiert werden. Ich habe das zuerst versucht: typedef unsigned int firstID; typedef unsigned int secondID;Deklarieren Sie Typen ohne implizite Konvertierung in C++
aber das ist nicht gut, da die beiden Typen nur Synonyme für unsigned int sind, also frei austauschbar sind.
Ich würde dies gerne einen Fehler verursachen:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
aber in Ordnung sein:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Mein Grund ist, so dass die Funktionsargumente stark typisiert werden, zB:
void f(firstID, secondID); // instead of void f(unsigned int, unsigned int)
Was ist der Mechanismus, den ich suche?
Dank
Si
Kurz um die Typen tatsächliche Klassen oder Strukturen zu machen, gibt es keine Möglichkeit, dies zu tun. –
Wurde das nicht schon gefragt? http://stackoverflow.com/questions/376452/enforce-strong-type-checking-in-c-type-strictness-for-typedefs – Manuel