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

问题描述 投票:0回答:1

每次调用

force
函数时,我都会得到一个
undefined reference; collect2: error: ld returned 1 exit status

这是

force
main
函数上方
main.cpp
函数的声明:

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

这是

main
中的
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;
}

这里是

force
main
函数下方
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
数组大小及其用途的定义(我的设置为 10)。

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

我尝试将函数指针单独初始化为变量并将它们传递给函数,但这也不起作用。谁能帮我找出为什么我仍然收到此错误?

如果我缺少任何必需的信息,我很乐意提供更多信息。

c++ c++11 function-pointers undefined-reference
1个回答
0
投票
    // 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]);
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.