很抱歉,如果之前可能会问这个问题,但我找不到合适的答案。 我试图在另一个已经由不同的人编写的类中使用我自己的类文件。整个程序基于Omnet ++。在构建之前,一切似乎都没问题,但是一旦我构建程序就会给我一个错误
undefined reference to `RatePrediction::RatePrediction(double, double, double)
我正在尝试在CentralEntity中使用RatePrediction,这就是我所做的:
在RatePrediction.cc中:
#include "CentralEntity.h"
RatePrediction::RatePrediction(double gs,double gi, double dataRate):
gs(gs), gi_int(gi), reqDataRate(dataRate), result(0), error(0){
//some codes
}
在CentralEntity.h中:
#include "RatePrediction.h"
class CentralEntity : public cAsyncModule
{
//friend classes ....
protected:
virtual void initialize();
}
在CentralEntity.cc中:
#include "RatePrediction.h"
void CentralEntity::initialize()
{
RatePrediction RateObj(1.1e-13,1.2-13,1e4);
}
修改
@hildensia感谢您的评论。我实际上做了这个,现在它的工作原理。但我不确定它是否可靠和稳定。
我手动编辑了Makefile
并添加了:
OBJS= RatePrediction.o
RatePrediction.o: RatePrediction.cc
$(CXX) -c $(COPTS) RatePrediction.cc
答案 0 :(得分:1)
问题在于编译。似乎根本没有编译RatePrediction.cc
。因此链接器找不到构造函数,因为它没有对象文件。您在Makefile中的解决方案现在似乎是合适的,但可能会被您的构建系统覆盖。因此,您应该收集有关如何定义Eclipse应构建哪些文件的信息。
答案 1 :(得分:0)
您应该在RatePrediction.h文件中定义Class RatePrediction的构造函数。 在每个* .h文件中添加“#ifndef * _ H #define * _H #endif”这样的行可能会更好。