首页 > 编程语言 >[C++] template+struct 组合使用小技巧

[C++] template+struct 组合使用小技巧

时间:2024-08-20 18:28:54浏览次数:13  
标签:struct two C++ typeStruct 枚举 template 声明

1.简单说明

  struct + template的组合可以让我们使用同一个结构体名称(注意:只是名称相同,但是本质上已经不同了),实现不同的结构体功能,可以将其理解为设计模式中的工程模式。

2.代码示例

  首先,声明一个枚举类型,用于区别结构体,然后使用template+struct,声明一个结构体,只声明不实现

//为了方便讲解我使用枚举类型
//简单定义一个枚举类型
enum type
{
    one,
    two,
    three
};

//使用template+struct 声明一个结构体
//注意只声明,不具体写实现,没有大括号
template<type tp>
struct typeStruct;

  然后,实现两个不同的结构体

template<>
struct typeStruct<type::one>
{
    bool a;
};

template<>
struct typeStruct<type::two>
{
    int a;
};

  最后,实例化结构体

//声明一个 one 类型的
typeStruct<type::one>  one;
//声明一个 two 类型的
typeStruct<type::two>  two;
//随便写的
two.a = one.a;

 

标签:struct,two,C++,typeStruct,枚举,template,声明
From: https://www.cnblogs.com/pangcoder66/p/18370027

相关文章

  • MapStruct-plus cannot find converter from
     废话不多,直接上1错误:cannotfindconverterfrom 2描述我的情况我的项目分为2块,一块是接口,一块是实现API接口(kintech-api-bo):其中dto,req,res包含了@AutoMapper 实现(kintech-bo): 3问题当我的其他模块(kintech-crm),引用了kintech-api-bo时,调用如下语句就会报错......
  • [Paper Reading] Reconstructing Hands in 3D with Transformers
    名称ReconstructingHandsin3DwithTransformers时间:CVPR2024机构:UCBerkeley,UniversityofMichigan,NewYorkUniversityTL;DR本文提出一种使用Transformer来做HandTracking的算法名为HaMeR(HandMeshRecorvery),优势是大数据规模(利用多数据集的2D/3D标签),大模型(......
  • C++基础用法
    容器vector定义#include<vector>usingnamespacestd;vector<type>name;//type为数据类型,如int,string等,name为vector标识访问通过下标访问通过迭代器访问vector<type>::iteratorit;例如:vector<int>::iteratorit=vi.begin();......
  • 从零开始学习C++(0)
    这是什么?要先学习C++,我们要先了解C++是什么这是WikiPedia的解释,我们来提炼一下:C++是一种高级语言。C++是C语言的扩展升级版。C++是面向对象语言。下载环境简单了解一下后,我们来下载C++编译器环境。目前有很多种编译器,例如:Dev-C++CodeBlocksVSCVSred......
  • C++语言基础|函数重载
    C++语言基础|函数重载1.函数重载1.1函数重载的定义1.1函数重载的示例2.函数重载注意事项3重载函数的二义性3.1绑定(匹配)二义性3.2消除二义性3.3注意事项1.函数重载1.1函数重载的定义函数重载就是两个以上的函数,取相同的函数名,但是形参的个数和类型不同,编......
  • C++容器概览
    容器容器是用来存储数据的序列,它们提供了不同的存储方式和访问模式。STL中的容器可以分为三类:1、序列容器:存储元素的序列,允许双向遍历。vector:动态数组,支持快速随机访问。deque:双端队列,支持快速插入和删除。list:链表,支持快速插入和删除,但不支持随机访问。2、关联容器:存......
  • C++基础
    指针#include<iostream>usingnamespacestd;intmain(){//实际变量的声明intvar=20;//指针变量的声明int*addr;//在指针变量中存储var的地址addr=&var;cout<<"var="<<var<<endl;//输出在指针变量中存储......
  • [Javascript] HTML Template Interpolation
    Thebasic interpolatefunctionwecancreate:functioninterpolate(str,params){letnames=Object.keys(params);//["title","description"]letvalues=Object.values(params);//["Hello","World"]......
  • Ros2 MoveIt2 MoveGroup C++接口
     在MoveIt中,最简单的用户界面是通过 MoveGroupInterface 类。它为用户可能想要执行的大多数操作提供了易于使用的功能,特别是设置关节或姿势目标、创建运动计划、移动机器人、将对象添加到环境中以及从机器人上连接/分离对象。此接口通过ROS主题、服务和操作与 MoveGrou......
  • c++超详细教学(5)变量1
    上一节,我们讲到了换行,空格,以及运算,这一节课,我们讲一个高级一点的东西,叫变量。大家不用慌张,名字听着很玄乎,实际上很简单。上次,我给大家讲到了运算,可是如果你每次都改代码,那就显得太不专业了,为了让大家更加专业,我就给大家讲一讲变量。比如,你每次只算一个数字加一,那么我们就可......