C++ 链接未定义的引用

C++ linking undefined reference

我正在做一个开源项目:https://github.com/daniftodi/metal

我在 holders/ArrayHolder.h 中定义了 ArrayHolder class 并在 holders/ArrayHolder.cpp

中实现

我的代码可以编译;但在我的 main.cpp 中;我需要:

#include "holders/ArrayHolder.cpp"

如果我不这样做;我收到此错误:

main.cpp.o:(.rodata._ZTV11ArrayHolderI8FunctionE[_ZTV11ArrayHolderI8FunctionE]+0x10): undefined reference to `ArrayHolder<Function>::put(Function*)

我不明白问题,也找不到解决方案。请帮助我。

如果您使用模板;您需要在 header 文件中定义它们;您不能像使用普通方法或函数那样在 source 文件中定义它们。

请参阅此问题以进一步参考:Why can templates only be implemented in the header file?