1

对不起,如果这个问题之前可能被问过,但我找不到合适的答案。我正在尝试在另一个已经由不同人编写的类中使用我自己的类文件。整个程序基于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
4

2 回答 2

1

问题在于编译。RatePrediction.cc似乎根本没有编译。因此链接器找不到构造函数,因为它没有目标文件。您在 Makefile 中的解决方案目前似乎是合适的,但可能会被您的构建系统覆盖。因此,您应该收集有关如何定义应由 Eclipse 构建的文件的信息。

于 2014-02-21T09:49:42.180 回答
0

您应该在 RatePrediction.h 文件中定义类 RatePrediction 的构造函数。在每个 *.h 文件中添加这样的行“#ifndef *_H #define * _H #endif”可能会更好。

于 2014-02-21T09:24:42.740 回答