使用this关键字编译程序
Compiling program using the this-keyword
我正试图使用makefiles编译别人编写的程序,在使用之前我没有时间学习程序中的所有内容,因此我对一些错误感到困惑。
第一个错误是
(...): 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。因此,我很困惑它为什么找不到函数。
在这之后还有很多类似的错误。有人知道发生了什么事吗?
这是一个链接器错误,因此编译器在查找GarbageFlag::Used的声明时没有问题。缺少的是该方法的定义(实现)。
您需要确保包含GarbageFlag::Used实现的源文件已编译并与其他源文件链接在一起。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 谷歌模拟和覆盖关键字
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- 为什么"delete"关键字不删除节点?
- 在 c++ 中正确定义"this"关键字?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- C++ - 为什么这里需要'template'关键字?
- C++函数的关键字?
- 使用 'typename' 关键字将非类型视为依赖上下文中的类型
- "friend"关键字在C++中是什么意思?
- 声明C++数组(带或不带 "new" 关键字)
- 对齐和对齐的实际用例C++关键字
- 在 c++ 中三元运算符中不允许继续(关键字)吗?
- 考虑到其他好处,关键字'auto'真的有助于简化调试C++吗?
- 使用this关键字编译程序