8

我有一个形式的构造函数:

我的类(int a,int b,int c);

它被这样的代码调用:

MyClass my_object(4.0, 3.14, 0.002);

我想阻止这种从 double 到 int 的自动转换,或者至少在编译时得到警告。

在这种情况下,“显式”关键字似乎不起作用,对吧?

4

3 回答 3

9

你的编译器是什么?在 gcc 下,您可以使用-Wconversion这些类型的转换来警告您。

于 2010-02-19T08:58:20.703 回答
5

像这样声明一个私有构造函数:

private:
template <class P1, class P2, class P3>
MyClass(P1,P2,P3);

对于使用不是 all 的 3 个参数的任何构造,这将导致编译时错误int,并且它是可移植的。

于 2010-02-19T09:13:14.283 回答
2

声明一个私有MyClass(double a, double b, double c)构造函数。

于 2010-02-19T08:58:08.737 回答