gpt4 book ai didi

c++ - 与 g++ 链接时对函数的 undefined reference

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:18 24 4
gpt4 key购买 nike

我正在尝试链接多个目标文件,但出现 3 undefined reference to a function 错误。

输入测试.cpp

//test of input methods

#include <iostream>
#include <string>
#include <fstream>
#include <string>
#include <vector>


#include "Vector.h"
#include "Particle.h"
#include "read_particle_input.h"
#include "User_input.h"
#include "Particle_vector.h"

using namespace std;
using namespace berger_DEM;

int main() {

Particle_vector particles;
User_input input_data;

read_particle_input(particles, input_data);

cout <<endl<< particles.getpart(1).rho()<<endl<<particles.getpart(1).radius()<<endl;

return 0;
}

我将它与 5 个目标文件链接起来,这些文件的名称在“.h”文件中找到(只是从同名的 .cpp 文件编译而来的 .o 文件)。我收到的错误之一是

undefined reference to 'berger_DEM::read_particle_input(berger_DEM::Particle_vector&, berger_DEM::User_input&)

注意这个函数在read_particle_input.h中有原型(prototype),在read_particle_input.o中实现。我还收到了另外两个 undefined reference ,但我相信它们是同一个问题,如果我能解决这个问题,那么同样的解决方案应该适用于这两个。

原型(prototype):

namespace berger_DEM
{
void read_particle_input(Particle_vector&,User_input&);
}

实现://读取particle_input.dat的方法

void read_particle_input(Particle_vector & particles, User_input & input_data) 
{
//define local variables
Vector velocity_in;
Vector position_in;
double radius_in;
double rho_in;


//open file and define file pointer
std::ifstream particle_input ("particle_input.dat");

//go through each line in particle_input.dat and define each particle
if (particle_input.is_open()) {
for(int i=0;i<input_data.num_particles();i++) {
//read one line from particle_input.dat
particle_input >> position_in;
particle_input >> radius_in;
particle_input >> rho_in;
particle_input >> velocity_in;

//set particle properties and position/velocity
particles.getpart(i).setrho(rho_in);
particles.getpart(i).setradius(radius_in);
particles.getpart(i).move(position_in);
particles.getpart(i).accelerate(velocity_in);
}
}
//close file
particle_input.close();
}

我一直在寻找有同样问题的人,但我找不到任何东西。感谢您的帮助。

最佳答案

您的实现缺少类作用域。

改变

void read_particle_input(Particle_vector & particles, User_input & input_data) 
{
//define local variables

void berger_DEM::read_particle_input(Particle_vector & particles, User_input & input_data) 
{
//define local variables

关于c++ - 与 g++ 链接时对函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com