C++模板类示例如何改写为一个长尾词?

2026-04-16 21:484阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计432个文字,预计阅读时间需要2分钟。

C++模板类示例如何改写为一个长尾词?

声明和实现分离在一个文件中,以下是一个简化的示例:

cpp// 声明文件 book.htemplate class Book {public: Book(); ~Book();private: T data;};

// 实现文件 book.cpp#include book.h

template Book::Book() {}

template Book::~Book() {}

// 主函数文件 main.cpp#include #include book.h

int main() { Book b; return 0;}

这段代码将声明和实现分开在两个文件中,`book.h` 包含了模板类的声明,而 `book.cpp` 包含了模板类的实现。主函数在 `main.cpp` 中。

声明和实现在一个文件中:

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里面的部分)找不到。

C++模板类示例如何改写为一个长尾词?

解决办法:

* 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; }

本文共计432个文字,预计阅读时间需要2分钟。

C++模板类示例如何改写为一个长尾词?

声明和实现分离在一个文件中,以下是一个简化的示例:

cpp// 声明文件 book.htemplate class Book {public: Book(); ~Book();private: T data;};

// 实现文件 book.cpp#include book.h

template Book::Book() {}

template Book::~Book() {}

// 主函数文件 main.cpp#include #include book.h

int main() { Book b; return 0;}

这段代码将声明和实现分开在两个文件中,`book.h` 包含了模板类的声明,而 `book.cpp` 包含了模板类的实现。主函数在 `main.cpp` 中。

声明和实现在一个文件中:

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里面的部分)找不到。

C++模板类示例如何改写为一个长尾词?

解决办法:

* 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; }