C++ 模板类示例 template class
发布时间:2020-12-16 09:14:58 所属栏目:百科 来源:网络整理
导读:声明和实现在一个文件中: templateclass Tclass book{public:book();~book();private:};templateclass TbookT::book(){}templateclass TbookT::~book(){}int main(){bookint b;return 0;} ? 声明和实现分开在h和cpp文件中: ? 潜在问题是,仅仅按照普通clas
声明和实现在一个文件中: template<class T> class book { public: book(); ~book(); private: }; template<class T> book<T>::book() { } template<class T> book<T>::~book() { } int main() { book<int> b; return 0; }
? 声明和实现分开在h和cpp文件中: ? 潜在问题是,仅仅按照普通class的方式分开,在编译的时候,会报 link2019 错误。原因是在编译实例化模板类的文件时,模板类只有声明文件(h)被链接,其实现文件(cpp里面的部分)找不到。 解决办法: * 1 在实例化模板类的文中开头,包含该 cpp 文件(#include "xxx.cpp") * 2 声明和实现写在同一个h文件中;(本人不推荐这么做) ------------------- book.h ----------------------------------- #pragma once template<class T> class book { public: book(); ~book(); private: };
? ? ------------------- book.cpp ----------------------------------- #include "book.h" template<class T> book<T>::book() { } template<class T> book<T>::~book() { }
? ? ------------------- main.cpp ----------------------------------- #include "book.h" #include "book.cpp" int main() { book<int> b; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |