<tfoot id='1JSiB'></tfoot>

      • <bdo id='1JSiB'></bdo><ul id='1JSiB'></ul>
      <i id='1JSiB'><tr id='1JSiB'><dt id='1JSiB'><q id='1JSiB'><span id='1JSiB'><b id='1JSiB'><form id='1JSiB'><ins id='1JSiB'></ins><ul id='1JSiB'></ul><sub id='1JSiB'></sub></form><legend id='1JSiB'></legend><bdo id='1JSiB'><pre id='1JSiB'><center id='1JSiB'></center></pre></bdo></b><th id='1JSiB'></th></span></q></dt></tr></i><div id='1JSiB'><tfoot id='1JSiB'></tfoot><dl id='1JSiB'><fieldset id='1JSiB'></fieldset></dl></div>

      <legend id='1JSiB'><style id='1JSiB'><dir id='1JSiB'><q id='1JSiB'></q></dir></style></legend>

      <small id='1JSiB'></small><noframes id='1JSiB'>

    1. C++ 模板在 .h 中声明,在 .hpp 中定义

      时间:2023-05-24
        <tfoot id='4Bq9C'></tfoot>
      1. <small id='4Bq9C'></small><noframes id='4Bq9C'>

          <tbody id='4Bq9C'></tbody>
          <bdo id='4Bq9C'></bdo><ul id='4Bq9C'></ul>
          • <legend id='4Bq9C'><style id='4Bq9C'><dir id='4Bq9C'><q id='4Bq9C'></q></dir></style></legend>

              <i id='4Bq9C'><tr id='4Bq9C'><dt id='4Bq9C'><q id='4Bq9C'><span id='4Bq9C'><b id='4Bq9C'><form id='4Bq9C'><ins id='4Bq9C'></ins><ul id='4Bq9C'></ul><sub id='4Bq9C'></sub></form><legend id='4Bq9C'></legend><bdo id='4Bq9C'><pre id='4Bq9C'><center id='4Bq9C'></center></pre></bdo></b><th id='4Bq9C'></th></span></q></dt></tr></i><div id='4Bq9C'><tfoot id='4Bq9C'></tfoot><dl id='4Bq9C'><fieldset id='4Bq9C'></fieldset></dl></div>

              1. 本文介绍了C++ 模板在 .h 中声明,在 .hpp 中定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                限时送ChatGPT账号..

                我看到一些代码,其中开发人员在 .h 文件中定义了类模板,并在 .hpp 文件中定义了其方法.这让我有点意外.

                I saw some code in which the developer defined a class template in a .h file, and defined its methods in a .hpp file. This caught me a bit by surprise.

                在处理模板以及模板应该放在哪些文件中时,C++ 中是否有特定的约定?

                Are there are particular conventions in C++ when dealing with templates and what files they should be in?

                例如,假设我有一个 Vector 类模板,其中包含用于向量运算(加、减、点等)的方法.如果模板参数是 float(比较运算符),我还想专门化某些函数.您将如何在文件之间分离所有这些(指定是 .h、.hpp、.cpp).

                For example say I had a Vector class template with methods for vector operations (add, subtract, dot, etc.). I would also want to specialize certain functions if the template argument is a float (comparison operators). How would you separate all of this between files (specify whether .h, .hpp, .cpp).

                推荐答案

                通常(根据我的经验,YMMV)hpp 文件是一个 #include-ed CPP 文件.这样做是为了将代码分成两个物理文件,一个主要的包含文件和一个您的库的用户不需要知道的实现细节文件.它是这样完成的:

                Typically (in my experience, YMMV) an hpp file is an #include-ed CPP file. This is done in order to break the code up in to two physical files, a primary include and an implementation-details file that the users of your library don't need to know about. It is done like this:

                template<...> class MyGizmo
                {
                public:
                  void my_fancy_function();
                };
                
                #include "super_lib_implementation.hpp"
                

                super_lib_implementation.hpp(您的客户不直接#include)

                template<...> void MyGizmo<...>::my_fancy_function()
                {
                 // magic happens
                }
                

                这篇关于C++ 模板在 .h 中声明,在 .hpp 中定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:带有模板参数的模板中的默认值 (C++) 下一篇:C++11 类型特征来区分枚举类和常规枚举

                相关文章

                最新文章

                  <legend id='dpcav'><style id='dpcav'><dir id='dpcav'><q id='dpcav'></q></dir></style></legend>

                    <bdo id='dpcav'></bdo><ul id='dpcav'></ul>
                  <i id='dpcav'><tr id='dpcav'><dt id='dpcav'><q id='dpcav'><span id='dpcav'><b id='dpcav'><form id='dpcav'><ins id='dpcav'></ins><ul id='dpcav'></ul><sub id='dpcav'></sub></form><legend id='dpcav'></legend><bdo id='dpcav'><pre id='dpcav'><center id='dpcav'></center></pre></bdo></b><th id='dpcav'></th></span></q></dt></tr></i><div id='dpcav'><tfoot id='dpcav'></tfoot><dl id='dpcav'><fieldset id='dpcav'></fieldset></dl></div>
                  1. <tfoot id='dpcav'></tfoot>
                  2. <small id='dpcav'></small><noframes id='dpcav'>