gpt4 book ai didi

c++ - 错误 : ‘infinity’ does not name a type

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:46 25 4
gpt4 key购买 nike

我有一个包含许多 cpp 文件的程序,我尝试创建一个 makefile 但是当我运行它时我遇到了一些与此功能相关的错误:

void replace_infinites(cv::Mat_<int>& matrix) {
const unsigned int rows = matrix.rows,columns = matrix.cols;
// assert( rows > 0 && columns > 0 );
if(rows==0 || columns==0)
return;
double max = matrix(0, 0);
const auto infinity = std::numeric_limits<int>::infinity();

// Find the greatest value in the matrix that isn't infinity.
for ( unsigned int row = 0 ; row < rows ; row++ ) {
for ( unsigned int col = 0 ; col < columns ; col++ ) {
if ( matrix(row, col) != infinity ) {
if ( max == infinity ) {
max = matrix(row, col);
} else {
max = std::max<int>(max, matrix(row, col));
}
}
}
}

// a value higher than the maximum value present in the matrix.
if ( max == infinity ) {
// This case only occurs when all values are infinite.
max = 0;
} else {
max++;
}

for ( unsigned int row = 0 ; row < rows ; row++ ) {
for ( unsigned int col = 0 ; col < columns ; col++ ) {
if ( matrix(row, col) == infinity ) {
matrix(row, col) = max;
}
}
}

}我试图包括:

#include <limits> 

using namespace std;

但是当我编译我的程序时,我得到了这些错误:

munkres.cpp: In function ‘void replace_infinites(cv::Mat_<int>&)’:
munkres.cpp:44:16: error: ‘infinity’ does not name a type
munkres.cpp:49:38: error: ‘infinity’ was not declared in this scope
munkres.cpp:60:17: error: ‘infinity’ was not declared in this scope
munkres.cpp:69:38: error: ‘infinity’ was not declared in this scope

我在网上做了很多研究,但没有找到解决问题的方法。

最佳答案

您似乎没有使用 C++11 或更高版本进行编译,因为您的编译器提示以下行:

const auto infinity = std::numeric_limits<int>::infinity();

假设您确实包含了 #include <limits> ,除了使用 auto 外,该行没有任何问题。 .没有 C++11,编译器不知道什么 auto是。用 C++11 或更高版本编译,或更改 autoint .

无关,评论中指出了这一点,但使用了 numeric_limits<int>::infinity 是一种非常糟糕的检查方式。制作 int 没有任何意义关于无穷大的比较。更喜欢使用 numeric_limits<int>::max 相反(或任何其他适合您的目的)。

关于c++ - 错误 : ‘infinity’ does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756462/

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