错误:“无穷大”未命名类型
error: ‘infinity’ does not name a type
我有一个包含许多 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 或更高版本进行编译,或将auto
更改为 int
。
不相关,这在评论中指出,但使用 numeric_limits<int>::infinity
是一种可怕的、可怕的检查方式。对无穷大进行int
比较没有任何意义。更喜欢使用numeric_limits<int>::max
(或其他适合您目的的东西)。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- C++中未命名函数指针的语法
- 未命名的非类型模板参数有什么意义?
- C++包含函数标头会给出错误'__dest'未命名类型
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 用于创建未命名实例的语法
- 错误:"cast"未命名类型void setCastDescription(std::string
- 我可以定义一个 constexpr 匿名/未命名变量吗?
- C++ 错误:(类名)未命名类型
- 如何访问嵌套在命名命名空间中的未命名命名空间变量?
- 未命名的函数参数用法
- 使用 std ::transform 构造 std::vector.返回未命名结果的可能性?
- 为什么将字符串输出到未命名的 std::ofstream 反而给了我一个十六进制数?
- 在多个 cpp 文件中重用未命名的命名空间函数
- C++ ,错误:命名空间'std'中的'shared_ptr'未命名模板类型
- src/caffe/parallel.cpp:70:1:错误:“参数”未命名类型
- 错误:'int_type'未命名类型 - 如何继承 typedefs 和用法
- 如何修复错误,迭代器未在此范围内声明,并且迭代器未命名类型'
- 错误:“无穷大”未命名类型