我有一个接受类型对象的构造函数Material
:
SomeClass::SomeClass( const Material& mat ) ;
但是,Material
允许通过 a 构造Vector
:
Material::Material( const Vector& v ) ;
因此,SomeClass
可以允许由 a 构造Vector
:
SomeClass m( vec ) ; // valid, since vec is constructed to a Material first,
// then is passed to the SomeClass(Material) ctor
但是,在使用这种类型的ctors(在同一个项目的不同类中!)多次“射击自己的脚”之后,我想禁止直接构造对象,而是总是要求传递 a 。SomeClass
Vector
Material
有没有办法做到这一点?不知何故认为它与explicit
关键字有关。