模板怎么封装成接口单独编译啊?被 C++征服了,,,

2019-12-03 20:22:05 +08:00
 peiqing9003ah

最近学 C++, 发现模板实现分开写.cpp 里 单独编译就不过,报错。 可能是必须要和调用者一起编译。

那问题来了, 模板类就不能封装出接口 和库 给别人用吗??

如果可以, 怎么封装? 老铁们, 救救我。

代码如下: #include"template.h"

using namespace std; int main() { int a = 3, b = 4; cout << Max(a, b) << endl; double c = 5.6, d = 4.8; cout << Max(c, d) << endl; return 0; }

// template1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //

template<typename t=""> T Max(T& t1, T& t2);</typename>

报错如下:1>template1.obj : error LNK2019: 无法解析的外部符号 "int __cdecl Max(int &,int &)" (??$Max@H@@YAHAAH0@Z),该符号在函数 _main 中被引用 1>template1.obj : error LNK2019: 无法解析的外部符号 "double __cdecl Max(double &,double &)" (??$Max@N@@YANAAN0@Z),该符号在函数 _main 中被引用 1>E:\work_project\template1\Debug\template1.exe : fatal error LNK1120: 2 个无法解析的外部命令

2917 次点击
所在节点    C++
1 条回复
anytk
2019-12-03 21:06:43 +08:00
模板是编译时的多态而已啊,必须要引用源文件才能使用,没办法以二进制库提供调用的。

PS:劝君早早从 C++弃坑吧,用 C 挺好的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/625642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX