"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)

你应该很好。