代码之家  ›  专栏  ›  技术社区  ›  Aidan Pastonyck

错误:对以数组和函数指针为参数的函数的“未定义引用”

  •  0
  • Aidan Pastonyck  · 技术社区  · 2 年前

    每次我打电话给 force 函数我得到一个 undefined reference; collect2: error: ld returned 1 exit status .

    这是的声明 武力 上面的函数 main 中的函数 main.cpp :

    void force(Particle(&a_p)[SIZE], void(*force_func)(Particle&, Particle&));
    

    这是 主要的 中的函数 main.cpp :

    int main() {
    
        Particle a_particle[SIZE];
        
        for (int i = 0; i++ < iterations;) {
            force(a_particle, float3::graviton);
            force(a_particle, float3::photon);
        }
        
        return 0;
    }
    

    以下是的定义 武力 下面的函数 主要的 中的函数 main.cpp :

    void force(Particle(&a_p)[SIZE], void (*force_func)(const Particle&, const Particle&)) {
        for (unsigned int i = 0    ; i++ < SIZE - 1;)
        for (unsigned int j = i + 1; j++ < SIZE;    ) {
            force_func(a_p[i], a_p[j]);
        }
    }
    

    SIZE 是用于的大小的定义 a_particle 数组及其用途(Mine设置为10)。

    二者都 float3 Particle 是在单独的头文件中声明的结构。

    我试着将函数指针分别初始化为变量,并将它们传递到函数上,但也没有成功。有人能帮我找出为什么我仍然会出现这个错误吗?

    如果我遗漏了任何必要的信息,我很乐意提供更多信息。

    1 回复  |  直到 2 年前
        1
  •  0
  •   sandeep chaudhary    2 年前
        // main.cpp
    
        #include "float3.h" // Include header file where float3 struct is declared
        #include "Particle.h" // Include header file where Particle struct is declared
    
        #define SIZE 10 // Define the size of the a_particle array
    
        void force(Particle(&a_p)[SIZE], void(*force_func)(const Particle&, const Particle&));
    
        int main() {
        Particle a_particle[SIZE];
        
        // Assuming iterations is defined somewhere
        int iterations = 10; // For example
    
        for (int i = 0; i++ < iterations;) {
            force(a_particle, float3::graviton);
            force(a_particle, float3::photon);
        }
        
        return 0;
    }
    
    void force(Particle(&a_p)[SIZE], void (*force_func)(const Particle&, const Particle&)) {
        for (unsigned int i = 0; i < SIZE - 1; ++i)
            for (unsigned int j = i + 1; j < SIZE; ++j) {
                force_func(a_p[i], a_p[j]);
            }
    }
    
    推荐文章