gpt4 book ai didi

c++ - 提供 bool 和 double 重载时如何避免不明确的构造函数错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:36:52 26 4
gpt4 key购买 nike

我正在构建一个实例可以表示多个简单值类型的类。它的界面大致如下所示:

class value {

public:

value();
explicit value( double value );
explicit value( bool value );

...
}

我发现我无法按照我希望的方式构造它,因为整数(一个非常常见的用例)在 bool 和 double 之间被认为是不明确的。

value bool_value( true );   // OK
value pi_approx( 3.14159 ); // OK
value int_value( 42 ); // ERROR: ambiguous constructor

有没有什么方法可以在不要求调用者对数值使用小数点或使用显式“make”静态函数的情况下完成这项工作?

[编辑]:此类表示来自 JSON 解析树的值,因此 bool 和 number 之间的区别很重要,必须保留。

最佳答案

你应该指出,在这种情况下它是 double 的或 bool 型的。有点像

value int_value(static_cast<double>(42));

或者简单地编写构造函数,它应该接收整数值。

问题是,编译器有两种构造对象的变体,一种是将整数转换为double,第二种是将整数转换为bool,没有一个比另一个更有值(value),因此,编译器无法在没有帮助的情况下进行选择。

关于c++ - 提供 bool 和 double 重载时如何避免不明确的构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20756711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com