此问题在此处已有答案:
(17个答案)
7天前关闭。
我正在学习c++,我正在使用模板,当我使用模板在头文件中声明函数,并在cpp中实现它时,它一直说"undefined reference to void do_something<SomeEnum>()"
.h文件:
enum SomeEnum {
Yes,
No,
Maybe
};
template<SomeEnum someEnum>
void do_something();
void do_something();
.cpp文件:
#include "test.h"
#include "stdio.h"
template<SomeEnum someEnum>
void do_something() {
printf("%d\n", someEnum);
}
void do_something() {
printf("...\n");
}
主文件:
...main function
do_something(); // no error
do_something<Yes>(); // thrown an error
2条答案
按热度按时间eqqqjvef1#
通常,模板化函数也在头文件中 defined,尽管如果你坚持声明和定义分开,你可以在头文件中的模板化声明之后使用
#include ".cpp"
(更多信息请参见Why can templates only be implemented in the header file?)。xn1cxnb42#
我将此格式用于此类代码
内存.hpp
内存.cpp
cpp.templatec++.templateseperate.template