编写template时遇到undefined reference to

  具体情况是,没有把 模板类中函数的定义写在相应的.h文件中

  参考:http://stackoverflow.com/questions/8752837/undefined-reference-to-template-class-constructor

  我的理解:

  像之前一样把函数声明和定义分离,却遇到了很奇怪的错误。Google之后才知道:模板类只是告诉了编译器如何去生成类,并没有生成类,在编译main.cpp的时候,生    成List<QUADPTR>类时,其中的函数因为在list.h中没有具体的定义,都没有生成,而在编译list.cpp时,编译器并不知道要生成哪个类,并没有生成例如push_back等函数,这导致在连接的时候,List<QUADPTR>::push_back并没有相应的实现。解决方法有两个,一个是把定义写在.h文件中,这样编译main.cpp时,由于include.h,是会生成具体的函数的,另一个方法是在list.cpp文件中告诉编译器要生成的类,template class List<QUADPTR>。

时间: 2024-12-13 17:26:11

编写template时遇到undefined reference to的相关文章

在做nios ii uart232 实验时出现undefined reference to `fclose&#39;等错误。

程序如下 #include<stdio.h> #include<string.h> #include "system.h" int main () { char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt = 0; printf("Please Enter some characters: \n"); fp = fopen ("/de

解决ndk编译lua时遇到 undefined reference to &#39;__srget&#39;的问题

今天用ndk r10d版本编译lua时,遇到几个错误,提示没有找到__srget 没有定义,于是看了国外的大神的解决方法, 是因为ndk在r10c之后的版本已经将getc函数屏蔽了,所以导致编译器找不到,只能用比较就得ndk去编译,笔者用 ndk r10b成功编译.附上r10b的下载地址:http://pan.baidu.com/s/1boUO775 转载请注明出处, from 博客园HemJohn 解决ndk编译lua时遇到 undefined reference to '__srget'的问

Ubuntu使用多线程cmake时出现undefined reference to `pthread_create&#39;

原因是ubuntu需要查找Threads第三方库,不能直接使用,因此,在cmakelists.txt文件中添加以下两行代码就ok find_package(Threads) target_link_libraries(HELLO ${CMAKE_THREAD_LIBS_INIT})   Ubuntu使用多线程cmake时出现undefined reference to `pthread_create' 原文地址:https://www.cnblogs.com/excellentlhw/p/108

C 调用数学函数pow时遇到 undefined reference [已解决]

1.问题描述编译如下代码 #include <stdio.h> #include <math.h> int main() { float x = 2, y = 10; float p = 0; p = pow(x, y); printf("%f\n", p); return 0; } 出现如下问题undefined reference to `pow' 2.解决方法1)man pow 2)在man手册中提到 调用 pow要做两件事,第一,包含头文件,第二编译时加

Qt经典出错信息之undefined reference to `vtable for classname

原文链接:Qt经典出错信息之undefined reference to `vtable for classname 这个出错信息太常见了,用过Qt两个月以上的朋友基本上都能自己解决了,因为太经典了,可以给新手参考. 出错信息一般类似:undefined reference to `vtable for classname MyWidget`在执行make命令后出现. 出错原因是在定义类的时候为了能使用signals和slot,在类定义的后面加了Q_OBJECT引起. 因为Q_OBJECT是一个

linux + eclipse + cdt 报错undefined reference......好麻烦的,这位大牛给出的方法可行,特此MARK!!!!

http://bbs.csdn.net/topics/390239632 kerosun kerosun 等级: 结帖率:96.92% 楼主 发表于: 2012-10-11 12:00:51 比如有一个tools工程,提供给其他工程通用的工具函数. 我现在的做法就只能是ctrl+c|ctrl+v一旦工具函数发生变化,还需要在用到这些函数的工程中更新,比较麻烦. 看到eclipse工程属性设置中有Project References,但是一直不会用.那位好心人能说说怎样实现我的需求. 更多0分享到

(转) Qt 出现“undefined reference to `vtable for”原因总结

由于Qt本身实现的机制所限,我们在使用Qt制作某些软件程序的时候,会遇到各种各样这样那样的问题,而且很多是很难,或者根本找不到原因的,即使解决了问题,如果有人问你为什么,你只能回答--不知道. 今天我在这里列举的问题也是再编写Qt程序时,总是遇到的问题,问题普遍,而答案却不唯一,解释这一个问题的说法很多,往往只适合某一种情况,因为这个错误太笼统了,它就是-- “undefined reference to `vtable for”可能你看着很熟悉,似乎在c++程序中也遇到过这个问题,你说对了,有

undefined reference to &#39;mq_open&#39;

验证 UNPv2里的一个例子时,连接时出现 undefined reference to 'mq_open' 错误. man mq_open ,发现里面有这么一句话 :link with -lrt .加上 -lrt 后,连接成功. 运行,出现 Permission deny.继续查,man mq_overview 发现: Each message queue is identified by a name of the form /somename. 也就是说在指定 mqueue 的名字时,必须

CentOS下编译CPP文件时报错[undefined reference to `__gxx_personality_v0&#39; collect2: ld]的解决办法

在CentOS环境下编译CPP时报出 undefined reference to `__gxx_personality_v0' collect2: ld 以上错误,调查了一下,加上参数[-lstdc++]就可解决 例: gcc -lstdc++ a.cpp 参考自http://mlq.blog78.fc2.com/?mode=m&no=14 CentOS下编译CPP文件时报错[undefined reference to `__gxx_personality_v0' collect2: ld]