C_and_CPP 板


LINE

开发平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux/g++ // 将 template 宣告在 quaternion.h , 函数实作在 quaternion.cpp https://gist.github.com/anonymous/00090f1598973c1c924afebf88199cc9 这样编译下面错误 g++ main.cpp quaternion.cpp -o main /tmp/ccnOQeym.o: In function `main': main.cpp:(.text+0x27): undefined reference to `Quaternion<float>::Quaternion()' main.cpp:(.text+0x38): undefined reference to `Quaternion<float>::~Quaternion()' collect2: error: ld returned 1 exit status 我把template 宣告跟实做都集中在 quaternion.h 可以编译过 https://gist.github.com/anonymous/21a12dfedf6982b963d249f890977aaf g++ main.cpp -o main 请问这是什麽原因造成? 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.182.180.254
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1474555677.A.11B.html ※ 编辑: gigigigi (175.182.180.254), 09/22/2016 22:48:27
1F:推 g0010726: 所以是指一开始没把实作include到main.cpp会error吗? 09/22 23:07
2F:→ g0010726: 这是因为编译main.cpp的时候需要有template的实作, 09/22 23:07
3F:→ g0010726: 用来产生Quaternion<float>这个class吧 09/22 23:08
4F:→ gigigigi: gcc -c main.cpp 可以过~上面错误应该是link 阶段出错 09/22 23:11
※ 编辑: gigigigi (175.182.180.254), 09/22/2016 23:13:00
5F:→ gigigigi: g++ main.cpp quaternion.cpp -o main 也有把 09/22 23:13
6F:→ gigigigi: quaternion 实作编译出来但 link 出错 09/22 23:14
7F:→ ilikekotomi: https://goo.gl/GW1ma0 最简单的方法是都放到.h档 09/22 23:36
8F:推 legendmtg: template实作要跟定义写在同个档里 09/22 23:37
9F:→ legendmtg: 宣告 09/22 23:37
10F:→ ilikekotomi: https://goo.gl/ZaAepL 或是参考这个 两个都有写原因 09/22 23:38
11F:→ gigigigi: 我是那闷这样拆问什麽 link 阶段会失败.. 因为这程式码 09/22 23:38
12F:→ gigigigi: 是拆成h & cpp 档案.. 09/22 23:39
13F:→ ilikekotomi: 我的理解是编译Q.cpp的时候 不会知道要编出Q<float> 09/22 23:40
14F:→ ilikekotomi: 你在.cpp加个template class Q<float>; 应该就会对了 09/22 23:41
15F:→ ilikekotomi: Q.cpp没有编译出Q<float>的实作 所以main.cpp 09/22 23:43
16F:→ ilikekotomi: 就会出现link error 09/22 23:43
17F:→ ilikekotomi: 不过一般都是全部放到.h档 stl的容器也都是这样 09/22 23:49
18F:→ gigigigi: 我大概懂了,template 是编译阶段看宣告type 去觉的产生 09/23 00:24
19F:→ gigigigi: 对应 type class ... 09/23 00:25
20F:推 QQ29: 你可以在你的quaternion.cpp 最後面写上 09/23 04:02
21F:→ QQ29: template class Quaternion<float>; 09/23 04:02
22F:→ QQ29: 应该就可以了 09/23 04:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP