当前位置: 首页 > 知识库问答 >
问题:

numeric_limits::max和“从' int (*)()noexcept (true)'到' value_t {aka int} '的转换无效”

濮阳祯
2023-03-14

我使用< code>typedef unsigned int value_t定义了一个类型;和一个函数

value_t find_minimal_value(...) {
    ...
    if(...) return numeric_limits<value_t>::max;
    ...
}

编译器拒绝编译它,说:无效的转换从'int(*)()(true)'到'value_t{aka int}'。

这是什么意思?查看numeric_limits类,< code>min()函数应该返回一个通过template typename传递给它的类型的变量,在本例中是< code>value_t。那么为什么代码不编译呢?

共有1个答案

周泰
2023-03-14

std::numeric_limits::max() 是一个函数,因此您需要返回其调用的结果。这是使用调用运算符完成的:

value_t find_minimal_value() {
    if (...) return numeric_limits<value_t>::max();
    //                                          ^^
}

错误消息意味着它无法将函数指针(即 int (*)() 转换为无符号 int

 类似资料:
  • 之前,我已经实施了此功能,并且它起到了作用: 我甚至可以用下面的东西检查我是否得到了正确的尺寸,一切都很好。 但是,在使用以下初始化尝试整个程序时,我得到了一个编译错误: 以下是错误消息: rbm. cpp:在函数“ululemexFunction(int, mxArray**, int, const mxArray**)”中:rbm. cpp: 570:64: error:从“int”到“int

  • 我想创建一个简单的3x3矩阵类,并能够通过下标操作符访问其内容。代码如下: 我希望能够访问数组的元素,无论矩阵的对象是常量还是非常量。但我从编译器中得到以下错误: 错误:从“const int*”到“int*”的转换无效[-fpermissive] 我做了一些研究,我有一个假设:也许,因为我已经将这个成员函数声明为const函数,在它的定义中,编译器将对象的所有不可变成员视为const成员(它掩盖

  • 我一直在尝试编译,并玩了一圈的和数,但仍然不能弄清楚错误是什么。有什么想法吗? 标题:

  • 问题内容: 我引用了Herbert Schildt的第3章:数据类型,变量和数组: 字符的范围是0到65535。没有负字符。标准字符集ASCII(通常称为ASCII)的范围始终为0到127,而扩展的8位字符集ISO- Latin-1的范围为0到255。由于Java旨在允许程序在全球范围内编写使用时,将使用Unicode表示字符是有意义的。只要整数在范围内,也可以将整数分配给char。 (which

  • 我想将浮点值转换为int值或抛出异常,如果这种转换是不准确的。 我找到了以下建议:使用来转换,然后使用来检查这些值是否相等。如果它们相等,那么转换是精确的,否则就不是。 但是我发现了一个不起作用的例子。下面是演示这个例子的代码: 它输出: 我知道2147483648不适合整数范围,但我很惊讶为这些值返回true。有没有更好的方法来比较float和int?我想可以将这两个值都转换为字符串,但对于这样

  • 问题内容: 我想对成绩簿方法使用2D数组,其中包含学生姓名,然后是考试成绩。在课堂上,我有以下内容。 但是我得到一个错误int []无法转换为int。 问题答案: 你有: 但是是一个。数组维数必须为,因此不能用作数组维数(鉴于字面量是多少,我可以理解您对错误的困惑:它想要一个,但您给了它一个)。 从您的描述来看,我猜您的意思是: 哪里是你需要的,包含考试的次数。不过,只是一个猜测。