C++显式构造函数

Tar*_*aru 4 c++ constructor explicit

我有一个有2个构造函数的类.

   explicit MyClass(size_t num);
   template<class T> MyClass(T myObj);
Run Code Online (Sandbox Code Playgroud)

每当我做的时候我都想要

MyClass obj( 30 );
Run Code Online (Sandbox Code Playgroud)

将调用第一个构造函数,

在隐式构造函数和

MyClass obj = 30;
Run Code Online (Sandbox Code Playgroud)

第二个ctor将被召唤.

我怎样才能实现呢?

Sto*_*ica 7

30是有符号整数值,因此它不完全符合第一个构造函数的签名(因此,模板被实例化).

您可以更改显式构造函数的签名以接受a int,然后Myclass obj( 30 );调用显式构造函数,或者调用它30u以便匹配显式签名.