代码之家  ›  专栏  ›  技术社区  ›  Francisco José Letterio

尝试定义函数模板时的“未声明标识符”

  •  1
  • Francisco José Letterio  · 技术社区  · 3 年前

    我想定义一个函数来决定两个双精度数组是否(近似)相等。这是我的密码:

    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;
    };
    

    当我试图编译这个项目时,我会遇到如下错误

    错误C3861“a1”:找不到标识符

    我不明白这个错误是从哪里来的。它们是参数,为什么我需要定义它们?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Emanah    3 年前

    重写这行就行了

    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)