"Undeclared identifier" 尝试定义函数模板时
"Undeclared identifier" when trying to define function template
我想定义一个函数来确定两个双精度数组是否(近似)相等。这是我的代码:
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':找不到标识符
我不明白这个错误是从哪里来的。它们是参数,为什么我需要定义它们?
只需重写这一行
bool fuzzyEquality((const std::array<double, n>)& a1, (const std::array<double, n>)&a2)
作为
bool fuzzyEquality(const std::array<double, n>& a1, const std::array<double, n>& a2)
你应该很好。
我想定义一个函数来确定两个双精度数组是否(近似)相等。这是我的代码:
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':找不到标识符
我不明白这个错误是从哪里来的。它们是参数,为什么我需要定义它们?
只需重写这一行
bool fuzzyEquality((const std::array<double, n>)& a1, (const std::array<double, n>)&a2)
作为
bool fuzzyEquality(const std::array<double, n>& a1, const std::array<double, n>& a2)
你应该很好。