小编wis*_*iak的帖子

如何防止构造函数在c ++中转换参数类型?

我有一个类来存储大的无符号数,我想允许用户创建一个使用对象类型,例如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.如何解决这个问题呢?

c++ constructor casting c++11

5
推荐指数
1
解决办法
983
查看次数

标签 统计

c++ ×1

c++11 ×1

casting ×1

constructor ×1