Implizite Umwandlung von numerischen Typen in Konstruktor in C ++ verhindern

8

Ich habe einen Konstruktor der Form:

MeineKlasse (int a, int b, int c);

und es wird mit Code wie folgt aufgerufen:

MyClass my_object (4.0, 3.14, 0.002);

Ich möchte diese automatische Konvertierung von Double zu Int verhindern oder zumindest Warnungen zur Kompilierzeit erhalten.

Es scheint, dass das "explizite" Schlüsselwort in diesen Fällen nicht funktioniert, oder?

    
Hugo 19.02.2010, 08:54
quelle

3 Antworten

9

Was ist dein Compiler? Unter gcc können Sie -Wconversion verwenden, um Sie über diese Arten von Conversions zu warnen.

    
Martin B 19.02.2010, 08:58
quelle
5

Deklarieren Sie einen privaten Konstruktor wie folgt:

%Vor%

Das wird einen Kompilierzeitfehler für jede Konstruktion verursachen, die 3 Parameter verwendet, die nicht alle int sind, und es ist portabel.

    
Joe Gauterin 19.02.2010 09:13
quelle
2

Deklarieren Sie einen privaten MyClass(double a, double b, double c) -Konstruktor.

    
Kristopher Johnson 19.02.2010 08:58
quelle

Tags und Links