我有一个类来存储大的无符号数,我想允许用户创建一个使用对象类型,例如long long,int,unsigned int等等,也从string.我创建了一个构造函数BigNumber(const unsigned long long),BigNumber(const std::string)但我想禁止用户使用如下构造:BigNumber('a')或BigNumber(true).我听说过,explicit所以我决定在我的课程定义中写下以下几行:
explicit BigNumber(const bool) = delete;
explicit BigNumber(const char) = delete;
不幸的是,当我想创建对象时:BigNumber x(1)或者BigNumber("1234")我得到错误,重载构造函数的调用是不明确的.在我写这些行之前,我没有收到此消息 explicit.如何解决这个问题呢?