每次调用
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
都是在单独的头文件中声明的结构。
我尝试将函数指针单独初始化为变量并将它们传递给函数,但这也不起作用。谁能帮我找出为什么我仍然收到此错误?
如果我缺少任何必需的信息,我很乐意提供更多信息。
// 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]);
}
}