Hug*_*ugo 8 c++ constructor casting implicit
我有一个形式的构造函数:
MyClass(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);
Run Code Online (Sandbox Code Playgroud)
这将导致使用3个参数的任何构造的编译时错误,这些参数不是全部int,并且它是可移植的.