<分区>
如何在头文件中声明模板函数并在源文件中定义?
// foo.h
template<typename T>
bool foo();
// foo.cpp
template<typename T>
bool foo()
{
return false;
}
// main.cpp
bool bar = foo<int>();
到目前为止我已经知道了。它编译,但在链接器处失败:“undefined reference to `bool foo
<分区>
如何在头文件中声明模板函数并在源文件中定义?
// foo.h
template<typename T>
bool foo();
// foo.cpp
template<typename T>
bool foo()
{
return false;
}
// main.cpp
bool bar = foo<int>();
到目前为止我已经知道了。它编译,但在链接器处失败:“undefined reference to `bool foo
最佳答案
你不能。但是如果你真的想要单独的文件,有一个解决方法:
Foo.tpp
template<typename T> void foo()
{
}
Foo.hpp
#ifndef FOO_HPP_
#define FOO_HPP_
template<typename T>
void foo();
#include "Foo.tpp";
#endif
main.cpp
#include "Foo.hpp"
int main()
{
foo<int>();
}
基本上,您将实现放在编译器无法识别的单独文件中,并将其包含在 header 的末尾。
关于c++ - 如何在源文件中定义模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685709/