使用this-keyword编译程序

时间:2013-08-29 12:37:42

标签: c++ compilation this header-files

我正在尝试使用makefile编译由其他人编写的程序,并且在我使用之前我没有时间学习程序中的所有内容 - 因此我对一些错误感到困惑。

第一个错误是

(...): In function `_ZN30RealTriDiagonalSymmetricMatrix14ResizeAndCleanEii':
/home/jorgen/diaghamsvn/DiagHam/src/Matrix/RealTriDiagonalSymmetricMatrix.cc:350: 
undefined reference to `GarbageFlag::Used()'

RealTriDiagonalSymmetricMatrix.cc 中的违规行是:

if (this->Flag.Used() == true)

我查找文件 GarbageFlag.h ,它包含函数 Used();这是其中的一部分:

class GarbageFlag
{

 private:

#ifdef __SMP__
pthread_mutex_t *FlagMutex;
#endif


public:

// default constructor
GarbageFlag();

// copy constructor
// flag = garbage flag to copy
GarbageFlag(const GarbageFlag& flag);

// destructor
~GarbageFlag();

// return value = reference on current garbage flag
GarbageFlag& operator = (const GarbageFlag& flag);

bool Used ();

此外,文件 RealTriDiagonalSymmetricMatrix.cc 包含一个标题,该标题还包括 GarbageFlag.h 。所以我很困惑为什么它找不到这个功能。

此后有很多类似的错误。任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:6)

这是链接器错误,因此编译器在查找GarbageFlag :: Used的声明时没有问题。缺少的是该方法的定义(实现)。

您需要确保包含GarbageFlag :: Used实现的源文件已编译并与其他源文件链接在一起。