C类模板未定义函数引用
发布时间:2020-12-16 04:53:07 所属栏目:百科 来源:网络整理
导读:参见英文答案 undefined reference to template function 2个 当我在我的main函数中调用模板类“add”和“greater”中的两个函数时,我一直得到未定义的引用. 所以我有: number.h #ifndef NUMBER_H#define NUMBER_Htemplate class Tclass number {public: T
参见英文答案 >
undefined reference to template function 2个
当我在我的main函数中调用模板类“add”和“greater”中的两个函数时,我一直得到未定义的引用. 所以我有: #ifndef NUMBER_H #define NUMBER_H template <class T> class number { public: T x; T y; number (int a,int b){ x=a; y=b;} int add (T&); T greater (); }; #endif number.cpp #include "number.h" template <class T> int number<T>::add (T& rezAdd){ rezAdd = x+y; return 1; } template <class T> T number<T>::greater (){ return x>y? x : y; } 我的主文件是:resolver.cpp #include <stdio.h> #include <stdlib.h> #include "number.h" int main (int argc,char **argv) { int aux; number<int> c(3,5); c.add(aux); printf ("number added [%d]n",c.add(aux)); printf ("greater number: [%d]n",c.greater()); return 0; } 我不断得到的错误是: g++ -Wall -o tema1 resolver.cpp number.cpp /tmp/ccX483J4.o: In function `main': resolver.cpp:(.text+0x34): undefined reference to `number<int>::add(int&)' resolver.cpp:(.text+0x47): undefined reference to `number<int>::add(int&)' resolver.cpp:(.text+0x64): undefined reference to `number<int>::greater()' collect2: ld returned 1 exit status make: *** [all] Error 1 我在这里先向您的帮助表示感谢! 解决方法
你的课名错了.您的类名为cai,其中所有函数都属于名为number的类:
http://ideone.com/ZayX0c
还有一件事……你不能在.cpp文件中有模板.模板函数/定义与类声明一起进入标题.这是您的未定义函数错误的原因.非模板函数放在.cpp中. #include <cstdio> #include <cstdlib> template <class T> class number { public: T x; T y; number (int a,int b){ x=a; y=b;} int add (T&); T greater (); }; template <class T> int number<T>::add (T& rezAdd){ rezAdd = x+y; return 1; } template <class T> T number<T>::greater (){ return x>y? x : y; } int main (int argc,c.greater()); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |