我正在开发一个开源项目:https://github.com/daniftodi/metal
我在holder / ArrayHolder.h中定义了ArrayHolder类,并在holder / ArrayHolder.cpp中实现
我的代码编译;但在我的main.cpp;我需要:
#include "holders/ArrayHolder.cpp"
如果我不这样做;我收到这个错误:
main.cpp.o:(.rodata._ZTV11ArrayHolderI8FunctionE[_ZTV11ArrayHolderI8FunctionE]+0x10): undefined reference to `ArrayHolder<Function>::put(Function*)
我不了解问题而无法找到解决方案。请帮帮我。
答案 0 :(得分:1)
如果您使用模板;你需要在标题文件中定义它们;你不能像在普通方法或函数中那样在源文件中定义它们。
请参阅此问题以获取进一步参考:Why can templates only be implemented in the header file?