c++ - 如何在源文件中定义模板函数
问题描述
如何在头文件中声明模板函数并在源文件中定义?
// foo.h
template<typename T>
bool foo();
// foo.cpp
template<typename T>
bool foo()
{
return false;
}
// main.cpp
bool bar = foo<int>();
到目前为止我已经得到了这个。它可以编译,但在链接器处失败:“未定义对 `bool foo<int>()` 的引用”
解决方案
你不能。但是如果你真的想要单独的文件,有一个解决方法:
文件.tpp
template<typename T> void foo()
{
}
Foo.hpp
#ifndef FOO_HPP_
#define FOO_HPP_
template<typename T>
void foo();
#include "Foo.tpp";
#endif
主文件
#include "Foo.hpp"
int main()
{
foo<int>();
}
基本上,您将实现放在编译器无法识别的单独文件中,并将其包含在标题的末尾。
推荐阅读
- scenekit - 在 viewDidLoad 期间应用的 SceneKit 节点旋转无效
- getstream-io - Stream API 不发送“to”属性
- wordpress - WooCommerce - 添加到购物车时修改元键
- javascript - jQuery循环遍历数组和第一个两项的removeClass,同时为其余项提供不同的效果
- javascript - 在javascript中使用reduce或filter计算对象的数量
- javascript - 如何为 React Js 和 Node Js 使用相同的端口?
- go - 如何为通过 go 脚本运行的终端命令提供选项?
- xslt - XSL 下拉选择属性
- clojure - 如何使用 test.check 生成随机图?
- sql-server - ArcGIS Pro 没有看到位于 SQL Server 上的属性表中的所有记录?