【发布时间】:2021-12-24 22:31:58
【问题描述】:
我想定义一个函数来决定两个双精度数组是否(大约)相等。这是我的代码:
Comparisons.h :
#pragma once
#include <array>
const double EPSILON = 0.0001;
bool areFuzzyEqual(const double& d1, const double& d2);
template<int n>
bool fuzzyEquality((const std::array<double, n>)& a1, (const std::array<double, n>)& a2) {
bool retVal = True;
for (int i = 0; i < n; i++) {
retVal &= areFuzzyEqual(a1[i], a2[i]);
}
return retVal;
};
当我尝试编译这个项目时,我得到了类似的错误
错误 C2065 'a1':未声明的标识符
错误 C3861 'a1':找不到标识符
我不明白这个错误来自哪里。它们是参数,我为什么需要定义它们?
【问题讨论】:
-
另外,如果有人可以给我一个关于如何执行相同功能但使用流的提示,我将非常感激(例如使用 std::accumulate 但不必制作辅助数组 a1 - a2 )
-
我不在编译器面前,但我的第一个猜测是括号括起不必要的参数。您应该查看完整的编译器输出以获取更多详细信息,而不是错误摘要窗口
-
为什么要在类型周围加上括号?
-
是括号,是的。我不知道他们为什么在那里