我有一个形式的构造函数:
我的类(int a,int b,int c);
它被这样的代码调用:
MyClass my_object(4.0, 3.14, 0.002);
我想阻止这种从 double 到 int 的自动转换,或者至少在编译时得到警告。
在这种情况下,“显式”关键字似乎不起作用,对吧?
我有一个形式的构造函数:
我的类(int a,int b,int c);
它被这样的代码调用:
MyClass my_object(4.0, 3.14, 0.002);
我想阻止这种从 double 到 int 的自动转换,或者至少在编译时得到警告。
在这种情况下,“显式”关键字似乎不起作用,对吧?
你的编译器是什么?在 gcc 下,您可以使用-Wconversion
这些类型的转换来警告您。
像这样声明一个私有构造函数:
private:
template <class P1, class P2, class P3>
MyClass(P1,P2,P3);
对于使用不是 all 的 3 个参数的任何构造,这将导致编译时错误int
,并且它是可移植的。
声明一个私有MyClass(double a, double b, double c)
构造函数。