草庐IT

c++ - 在 C++ 中将 struct 转换为 int

我有一个结构来表示具有如下位字段的29位CAN标识符。structcanId{u8priority:3;u8reserved:1;u8dataPage:1;u8pduFormat:8;u8pduSpecific:8;u8sourceAddress:8;}iD;在我的代码中,我想将这个结构复制到一个整型变量中。像这样的东西:intnewId=iD;但是我不确定这是否正确。有人可以对此发表评论吗?编辑:我可以在每个字段上使用移位运算符,然后使用按位或将它们放在正确的位置。但这首先使得使用带有位字段的结构毫无用处。 最佳答案 对于真正可移

c++ - 结构成员的模板函数

有没有办法编写能够在给定struct的不同成员上运行的单个模板函数?错误的示例如下:structFoo{inta,b;}template//whichdoesnotexistcout_member(Foofoo){cout(foo);cout_member(foo);return0;}我想象了一个基于开关的答案,但我想知道这个开关是在运行时(我想避免的)还是在编译时进行测试? 最佳答案 只要你想从一组具有相同类型的数据成员中取出一个数据成员,你可以使用指向数据成员的指针:templatevoidcout_member(Foofoo)

C++ 结构继承

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion据我所知,C++中类和结构的主要区别(可能是唯一的区别)是类的成员默认为私有(private),而结构的成员默认为公共(public)。但是,可能因为我以前是C语言开发人员,我仍然继续声明结构以仅包含“公共(public)”字段,并且我几乎从不声明方法(初始化成员的构造函数除外)。我还想利用结构的C++继承。我的问题是:即使语言允许,继承结构是否是一种好的做法?是否可以阻止结构声明虚方法,

c++ - 如何为 C++ 函数中的结构分配默认值?

我有一个结构:typedefstruct{doublex,y,z;}XYZ;我想定义一个这样的函数:doubleCalcDisparity(XYZobjposition,XYZeyeposition,doubleInterOccularDistance=65.0)但我似乎无法找到一种方法来为eyeposition分配默认值。我如何在C++中执行此操作? 最佳答案 是structXYZ{XYZ(double_x,double_y,double_z):x(_x),y(_y),z(_z){}XYZ():x(0.0),y(42.0),z(0

c++ - 微型 C++ 结构的行为

如果我定义一个结构如下:structtiny{longt;};在函数参数等方面,它会像long一样处理吗,例如,参数为:voidmyfunc(tinyx){...}像long参数一样被压入堆栈?从本质上讲,tiny结构是否仅与其唯一成员一样大?谢谢 最佳答案 结构体的内存消耗至少是组成变量内存大小的总和。但是,编译器可能会在变量之间或结构末尾添加填充,以确保给定计算机体系结构的正确数据对齐 关于c++-微型C++结构的行为,我们在StackOverflow上找到一个类似的问题:

c++ - 如何使用 vector 通过指针引用递归结构

我有一些结构,我们称它们为sn,它看起来像:structsn{stringname;vectorconnected_to;};现在,假设我已经从0-9声明了connected_tovector;我正在将snA连接到snB:A.connected_to[0]=&B;我有一种感觉,我正在以错误的方式处理这件事。基本上我想做的是在连接结构时避免复制结构......即:structsn{stringname;vectorconnected_to;};//...A.connected_to[0]=B;这会复制任何东西吗?更根本的问题当然是我不明白vector、指针和引用是如何真正深入地工作的。

C++ * vs [] 作为函数参数

有什么区别:voidfoo(item*list){cout和voidthis(itemlist[]){cout假设项目是:structitem{char*string;}指针指向字符数组的第一个和list只是一个项目数组... 最佳答案 对于编译器来说,没有区别。虽然读起来不一样。[]表示您想要将数组传递给函数,而*也可能意味着只是一个简单的指针。请注意,当作为参数传递时,数组会衰减为指针(以防您不知道)。 关于C++*vs[]作为函数参数,我们在StackOverflow上找到一个类似

c++ - 通过变量值访问结构属性

我的类中有一个具有4个属性的结构“边距”。与其编写四种不同的getter/setter方法,我想我可以用更好的方式来完成:classmyClass{private:structmargin{intbottom;intleft;intright;inttop;}public:structgetMargin();voidsetMargin(stringwhich,intvalue);};但是如何在函数setMargin()中设置与字符串“which”对应的结构的属性?例如,如果我调用myClass::setMargin("left",3),我如何才能将“margin.left”设置为“3”

c++ - `struct decay<T, R(A..., ...)>`是什么意思

templatestructdecay{usingtype=R(*)(A...,...);};它的确切含义是什么?我需要一些帮助~ 最佳答案 intfoo(int);intbar(int,...);这是两个不同的功能。foo是int(int)类型。bar的类型为int(int,...)。...是C风格的可变参数,不要与同样使用...的可变模板参数混淆。templatestructdecay{usingtype=R(*)(A...,...);};这部分是boost::hana中std::decay优化版本的实现。typenameT和T

c++ - 如何使用初始化列表 C++ 初始化数组

我有一个与C++数组和结构相关的问题。我有一个结构:structnpc_next_best_spot{npc_next_best_spot():x({0}),y({0}),value(-1),k(0),i({0}),triple_ress({0}),triple_number({0}),bigI(0){}intx[3];inty[3];doublevalue;intk;inti[3];inttriple_ress[3];inttriple_number[3];intbigI;};但这给出了警告"list-initializerfornon-classtypemustnotbeparen