模板类中的 C++ 非模板方法

2023-12-23

是否可以在 .cpp 文件的模板类(结构)中编写非模板方法的实现?我读到模板方法应该写在.h上,但我的方法不是模板方法,尽管它属于模板类。这是我的 .h 中的代码:

#include <iostream>

#ifndef KEY_VALUE_H
#define KEY_VALUE_H

using namespace std;

namespace types
{
    template <class T, class U>
    struct key_value
    {
        T key;
        U value;

        static key_value<T, U> make(T key, U value)
        {
            key_value<T, U> kv;

            kv.key = key;
            kv.value = value;

            return kv;
        };

        string serialize()
        {
            // Code to serialize here I want to write in .cpp but fails.
        }
    };
}


#endif /* KEY_VALUE_H */

我尝试编写方法的实现serialize()在 .cpp 文件中,如下所示:

#include "key_value.h"

using namespace types;

template <class T, class U>
string key_value<T, U>::serialize()
{
    // Code here returning string
}

最终出现错误:Redefinition of 'serialize'

这样做的正确方法是怎样的?


It's not possible*. Think about why templates need to be in header files in the first place: so that every .cpp file which uses code instantiated from a template can access it (templates are instantiated on demand only).

因此,在某种程度上,您可以将类模板视为数据布局(数据成员)的模板加上一组模板,每个模板对应一个成员函数。因此,模板类的所有成员都被视为模板。您甚至可以显式地专门化类模板的成员函数。

* As always, if explicit instantiation is an option, you can define the member function in a .cpp file and provide all required expicit instantiations in that .cpp file.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模板类中的 C++ 非模板方法 的相关文章

随机推荐

  • R中的数据帧累积游程长度编码

    我有一个数据帧 其中包含与观察值 1 或 0 相关的值 我想计算 1 的连续出现次数 重置为 0 游程长度编码函数 rle 看起来它可以完成工作 但我无法将数据转换为所需的格式 我想尝试在不编写自定义函数的情况下执行此操作 在下面的数据中
  • 如何计算多边形的圆角?

    我正在寻找一种允许我从多边形创建圆角的算法 我有一个代表多边形的点数组 以红色轮廓 并且在输出时我想要一个代表带圆角的多边形 以黑色轮廓 的点数组 我还希望有一种方法来控制每个角的半径 我尝试使用贝塞尔曲线和细分 但这不是我想要的 贝塞尔曲
  • 从 avro 文件复制时导入 SUPER 列失败

    是否可以从 avro 文件复制到 SUPER 列 我正在使用以下查询来导入 copy small table from s3 xxxx redshift chunk 1782431332154490799 avro access key i
  • Ajax 控制台错误:ReferenceError:$ 未定义

    我的 html 页面上的一个小脚本有问题 它只是一个应该由 a 标记中的 onclick 方法调用的函数 它不起作用 每次我单击浏览器中的链接时 控制台都会显示 ReferenceError 未定义 并指向下面代码的第三行 您需要
  • 如何在 Elastic High Level Rest Client 中使用 search_after 进行分页

    我正在使用弹性 RestHighLevelClient 与 ES 对话 我能够查询基本查询 尽管我正在尝试使用 search after api 从我的前端查询中设计分页 api 尽管 query after 在 RestLowLevelC
  • 在 Python 中使用 Selenium Webdriver 下载图像

    我正在尝试使用 Python 中的 Selenium Webdriver 从 URL 下载图像 该站点受登录页面保护 因此不能仅使用请求保存 URL 内容 登录后我可以从网站获取文本 但我不知道如何保存图像 登录该网站后 我可以执行以下操作
  • 以用户的区域设置格式和时间偏移显示日期/时间

    我希望服务器始终在 HTML 中提供 UTC 日期 并让客户端站点上的 JavaScript 将其转换为用户的本地时区 如果我可以以用户的区域设置日期格式输出 那就太好了 似乎从 UTC 日期开始最简单的方法是创建一个新的Date对象并使用
  • 在 Woocommerce 3 中添加新产品类型

    在 Woocommerce 中 我创建了自定义产品类型live stream 但是 当我在此自定义类型中创建新产品并发布它时 该产品仍然是 简单产品 并且没有获得live stream为其设置自定义类型 我做错了什么 如何使定制产品类型发挥
  • Django 中的 OneToOne 和子类化模型有什么区别

    例如 class Subdomain Site fields here and class Subdomain models Model site models OneToOne Site fields here 型号带有OneToOne拥
  • 通过在 Maven 中运行项目的 java 类来生成源

    我正在将一个较大的 Ant 构建转换为 Maven 作为 Ant 构建的一部分 我们有几个步骤通过调用项目的类之一来创建 Java 类 简化为 javac SomeGenerator java java SomeGenerator gene
  • 硒和 iframe

    我有一个 iframe 当我单击页面上的选项卡时会加载该 iframe 当我使用 Firebug 查看 IE8 上的 iframe 时 我看到的是 iframe id tabContextFrame class contextFrame c
  • Docker如何传递相对路径作为参数

    我想运行这个命令 docker run docker mup deploy config deploy mup js where docker mup是图像的名称 并且deploy config deploy mup js是参数 我的问题
  • 使用 Active Directory 或成员数据库进行 MVC 4 身份验证

    我正在构建一个可以通过两种方式访问 的网络应用程序 与我在同一组织工作的每个人都可以使用我们的活动目录来访问该应用程序 来自外部的每个人都应该通过单独的会员数据库加入该应用程序 每个人都应该在会员数据库中拥有一个包含其角色的帐户 因此广告连
  • 登录自定义路由被身份验证拒绝

    Router scope club slug function routes routes gt connect login controller gt Users action gt login 所以当我尝试访问时http example
  • 为什么我无法正确打印第 47 个斐波那契数?

    我使用的是 64 位操作系统 因此我也无法正确打印第 46 个斐波那契数 该数小于 40 亿 include
  • 什么是反向路由?

    确实 它到处都被提及 但甚至没有维基百科页面准确命名 这只是 URL 重定向的一个奇特名称吗 它还有其他名称或定义吗 反向路由是生成指向路由的 URL 的过程 给定路由的符号引用 可以是路由 视图 控制器的名称或对控制器的引用 具体取决于框
  • 如何在Tcl中安装软件包?

    我正在尝试安装critlib在我的机器上 http equi4 com critlib http equi4 com critlib 这样我就可以在 Tcl 中动态创建 zip 文件 问题是我不知道如何安装 Tcl 软件包 您是否有放置文件
  • 在 IIS7 静态内容集成模式中使用角色进行 ASP.NET 身份验证

    我正在试验IIS7中静态内容的集成身份验证模式 我按照本文中的说明进行操作 https web archive org web 20210612113955 https aspnet 4guysfromrolla com articles
  • BeautifulSoup 选择具有特定类的某些元素中的所有 href

    我正在尝试从中删除图像网站 我尝试使用 Scrapy 使用 Docker 和 scrapy slenium Scrapy 似乎不适用于 windows10 home 所以我现在尝试使用 Selenium Beautifulsoup 我正在将
  • 模板类中的 C++ 非模板方法

    是否可以在 cpp 文件的模板类 结构 中编写非模板方法的实现 我读到模板方法应该写在 h上 但我的方法不是模板方法 尽管它属于模板类 这是我的 h 中的代码 include