草庐IT

multi-struct

全部标签

c++ - 将 std::chrono::system_clock::time_point 转换为 struct timeval 并返回

我正在编写一个C++代码,它需要访问一个使用timeval作为当前时间表示的旧C库。在旧包中获取我们使用的当前日期/时间:structtimevaldateTime;gettimeofday(&dateTime,NULL);function(dateTime);//Thefunctionwilldoitstask现在我需要使用C++chrono,例如:system_clock::time_pointnow=system_clock::now();structtimevaldateTime;dateTime.tv_sec=????//HelpappreaciatedheredateTim

c++ - 看到 std::vector<Typo> 和 std::vector<struct Typo> 时发出的编译器诊断之间存在差异的原因是什么

考虑这两个程序及其尝试编译。#includeintmain(){std::vectora;//Errorscenteredaround`Typo`beinganincompletetype}例如,gcc6.3给出了以Typo为不完整类型为中心的错误消息,包括/usr/include/c++/6/bits/stl_vector.h:161:9:error:invaliduseofincompletetype‘structmain()::Typo’#includeintmain(){std::vectorb;//Errorscentredaround`Typo`notbeingdefine

c++ - 否定 size_t (即 `-sizeof(struct foo)` ))会发生什么?

我正在处理一些包含表单表达式的代码-(sizeof(structfoo))即size_t的否定,我不清楚C和C++标准对编译器的要求是什么。具体来说,通过查看这里和其他地方,sizeof返回类型为size_t的无符号整数值。在否定无符号整数时,我找不到指定行为的任何明确引用。有没有,如果有,是什么?编辑:好的,所以关于无符号类型的算术有一些很好的答案,但不清楚这实际上是否如此。当这否定时,它是对无符号整数进行操作,还是转换为有符号类型并对其进行处理?从标准中期望的行为是“想象它是相似幅度的负数,然后对无符号值应用'溢出'规则”? 最佳答案

c++ - 哪个更快? "vector of structs"还是 "a number of vectors"?

解决方案1:如果我有类似的类(class),classcar{public:inta;stringb;boolc;};我可以构建一个包含200辆汽车的vector:std::vectorallcas;allcars.resize(200)在运行时,我只是这样做:this_car=allcars[102];然后....解决方案2:我有std::vectora;a.resize(200);std::vectorb;b.resize(200);std::vectorc;c.resize(200);this_car_a=a[102];this_car_b=b[102];this_car_c=c

c++ - C 风格/C++ 正确性,struct/union/enum 标记是否与类型名称相同?

下面的MyStruct定义(标记MyStruct)和类型MyStruct的类型定义似乎完全可以被gcc(至少4.6.2)和g++编译。typedefstructMyStruct{inta;intb;}MyStruct;我的问题是:使用与类型名称相同的标签名称是否容易出错(在C和/或C++中)或风格不好?根据http://www.eetimes.com/discussion/programming-pointers/4024450/Tag-vs-Type-Names不是:I'veneverunderstoodwhytheyusedifferentnamesforthetagandthet

c++ - 编译错误 "' struct' type redefinition"虽然它是它的第一个定义

一切都运行良好,直到我将一些代码从主文件移动到新类,然后出现以下错误:errorC2011:'color1':'struct'typeredefinitionstructcolor1{color1(){red=green=blue=0;}color1(float_red,float_green,float_blue){red=_red;green=_green;blue=_blue;}floatred,green,blue;};有什么想法吗? 最佳答案 如果编译器说它被重新定义了,那么它可能是。我的心理调试技能告诉我,您将结构从源文

c++ - C++ 中 struct typedef struct 的用途

在C++中可以创建一个结构:structMyStruct{...}还可以做以下事情:typedefstruct{...}MyStruct;但据我所知,两者之间没有明显的区别。哪个更可取?如果没有区别,为什么两种方式都存在?哪一种在风格或可读性上比另一种更好? 最佳答案 以下是两个声明/定义之间的区别:1)YoucannotuseatypedefnametoidentifyaconstructororadestructorstructMyStruct{MyStruct();~MyStruct();};//oktypedefstruct

c++ - 指向 "inner struct"成员的指针是否被禁止?

我有一个嵌套结构,我想要一个指向嵌套成员之一的成员指针:合法吗?structInnerStruct{boolc;};structMyStruct{boolt;boolb;InnerStructinner;};这个:MyStructmystruct;//...boolMyStruct::*toto=&MyStruct::b;没问题,但是:boolMyStruct::*toto=&MyStruct::inner.c;不是。有什么想法吗?谢谢这里有一些细节是的,它是&MyStruct::b而不是mystruct::b;该代码来自自定义RTTI/Property系统。对于每个指定的类,我们保留

c++ - 如果 void 实际上被定义为 `struct void {};` 会破坏多少现有的 C++ 代码

void是C++类型系统中的一个奇怪的疣。它是一种无法完成的不完整类型,它有各种关于它可以使用的受限方式的神奇规则:Atypecvvoidisanincompletetypethatcannotbecompleted;suchatypehasanemptysetofvalues.Itisusedasthereturntypeforfunctionsthatdonotreturnavalue.Anyexpressioncanbeexplicitlyconvertedtotypecvvoid([expr.cast]).Anexpressionoftypecvvoidshallbeusedo

c++ - C中的 "union"和 "struct"之间的主要区别是什么?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:DifferencebetweenaStructureandaUnioninC我可以理解结构的含义。但是,我对union和结构之间的区别有点困惑。union就像一份内存。究竟是什么意思? 最佳答案 通过union,所有成员共享相同内存。对于结构体,它们不共享内存,因此为结构体的每个成员分配不同的内存空间。例如:unionfoo{intx;inty;};foof;f.x=10;printf("%d\n",f.y);在这里,我们将值10分配给foo::x。然后