V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peiqing9003ah
V2EX  ›  C++

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

  •  
  •   peiqing9003ah · 2019-12-03 20:22:05 +08:00 · 3086 次点击
    这是一个创建于 1818 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近学 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 个无法解析的外部命令

    anytk
        1
    anytk  
       2019-12-03 21:06:43 +08:00 via Android
    模板是编译时的多态而已啊,必须要引用源文件才能使用,没办法以二进制库提供调用的。

    PS:劝君早早从 C++弃坑吧,用 C 挺好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.