gpt4 book ai didi

c++ - 定义最大 double 时,“无法在初始化中将 'double (*)() noexcept' 转换为 'double'”

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:54 28 4
gpt4 key购买 nike

我读到使用最大 double 值的标准 C++ 方法是 std::numeric_limits<double>::max .

然后在我想要将我的 double 初始化为我使用的最大 double 的每个函数中:

#include <limits>
#define MAX_DOUBLE (std::numeric_limits<double>::max)

使用 gcc -pedantic -pedantic-errors -Wall -Wextra -Werror,我得到以下错误:

Cannot convert 'double (*)() noexcept' to 'double' in initialization

你能解释一下这个错误吗?

最佳答案

std::numeric_limits<double>::max是全局命名空间中的函数而不是常量。如果您正在创建宏,则需要将定义指定为函数标识符

#define MAX_DOUBLE std::numeric_limits<double>::max()

因此,如错误消息所示,将 MAX_DOUBLE 传递给 double 标识符意味着,使用函数指针初始化 double ,在本例中其类型为 double (*)() noexcept这会导致类型不匹配。

最后为了所有实际目的DBL_MAXclimits 中定义应该达到你的目的,因此你不会经历这种折磨。

关于c++ - 定义最大 double 时,“无法在初始化中将 'double (*)() noexcept' 转换为 'double'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29818899/

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