草庐IT

c++ - 访问结构 vector

我在访问另一个结构中的结构vector时遇到问题。可能有一些我看不到的东西......让我们有这样的结构:structStruct_1{intId;intMode;stringName;};另一种结构是这样的:structRecord{intId;intStructId;stringName;vectorstructHolder;};现在我需要填充一些结构记录intrecordCount=10;vectorrecordVector(recordCount);for(inti=0;i当我尝试填充structHolder的数据时,它失败并显示“C++vector下标超出范围”有人知道问题出

c++ - C++中虚类和extern的使用

当我还是一名学生时,我已经使用C++进行了一段时间的开发,但我从未在任何项目中使用C++中的虚拟类或外部。我最近才读到这两个,希望有人能更好地了解它们的用法。虚拟类的目的是什么?可以在哪里使用/实现它的示例。我在IBM网站上对它进行了一些掩饰,并编写了一个测试程序来查看它的运行情况,但是什么时候使用虚拟类比较好?extern也是如此。我看到了一个例子,并用C++为自己做了一个测试,但是使用extern而不是使用头文件的优势是什么?头文件而不是extern的优势是什么? 最佳答案 虚拟类适用于遇到dreadeddiamond时.例如:

c++ - 函数参数中的 struct 关键字和常量正确性

我的库中有一个不透明类型定义为:typedefstructMyOpaqueType*MyType;//easiertotypeforclientcode我不能使用typedef传递指向const结构的指针,所以一些函数看起来像:voidUsePointerToConst(conststructMyOpaqueType*)代替:voidUserPointerToConst(constMyType)//can'tuse,isreallyconstantpointer所以,鉴于此,我有两个问题:参数列表中的struct关键字是否只在C中是必需的?有一个更好的方法吗?我应该创建一个typede

C++:为什么转换为指针然后取消引用有效?

这个问题在这里已经有了答案:Whycastapointertoafloatintoapointertoalong,thendereference?(5个答案)关闭4个月前。最近我一直在研究C++中的套接字,我遇到了这个:*(structin_addr*)&serv_addr.sin_addr.s_addr=*(structin_addr*)server->h_addr;虽然这确实做了我想要的,但我对为什么我不能这样做有点困惑:(structin_addr)serv_addr.sin_addr.s_addr=*(structin_addr*)server->h_addr;既然它变成了一个

c++ - 初始化结构包含对结构的引用

是否可以有一个结构包含对结构的引用。这些是如何初始化的?请参阅下面的简短示例。谢谢typedefstruct{inta;}typeInner1;typedefstruct{intb;}typeInner2;typedefstruct{typeInner1&one;typeInner2&two;}typeOuter;voidfun2(typeOuter*p){p->one.a=2;p->two.b=3;}voidfun(typeInner1&arg1,typeInner2&arg2){typeOuter*ptr=newtypeOuter;//好的,感谢所有的输入。我还必须修改typeOu

c++ - C:将字节数组转换为结构

我在将字节数组转换为结构时遇到问题,一些字节被忽略或跳过。给定以下结构,typedefstruct{uint32_tid;uint16_ttest;uint8_tgroup;uint32_ttime;uint16_tduration;uint8_ta;uint8_tb;uint8_tc;uint16_td;uint16_te;uint8_tstatus;uint8_tx;uint8_ty;}testStruct_t,*PtestStruct_t;我有一个包含以下测试数据的数组:uint8_tpBuff={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0

c++ - 结构中的数组

我想创建一个结构,其中包含固定大小的数组:structsmt{intarray1[3];intarray2[10];intbananas;};这样我就可以在我的主代码中使用它。但是,当我尝试填充数组时,我总是会收到错误消息:intmain(){smtname;name.array1={1,2,3};return0;}错误在name.array1={...};行:errorC2059:syntaxerror:'{'errorC2143:syntaxerror:missing';'before'{'errorC2143:syntaxerror:missing';'before'}'如有任何

c++ - 如何从 ctime 巧妙地初始化 struct tm

考虑这两种从格式化为字符串的日期获取纪元时间的方法:#includeintmain(){structtmtm_init={0};strptime("2012-10-2616:00","%Y-%m-%dT%H:%M",&tm_init);longepoch=mktime(&tm_init);structtmtm_rand;strptime("2012-10-2616:00","%Y-%m-%dT%H:%M",&tm_rand);epoch=mktime(&tm_rand);return0;}来源:http://ideone.com/3xMUm8.本质上的区别在于tm_init是用0初始化

c++ - 尝试在 C++ 中转换结构时出现奇怪的错误消息

在Linux上使用C++,我只是相当愚蠢地写了这个:structin_addrip_addr=((structsockaddr_in)socket_addr).sin_addr;而不是预期的:structin_addrip_addr=((structsockaddr_in*)&socket_addr)->sin_addr;给我这个错误:"error:nomatchingfunctionforcallto‘sockaddr_in::sockaddr_in(sockaddr&)"我知道为什么会出现错误(我正在尝试转换结构),但我不明白为什么错误消息说明了它的作用。有人可以解释一下吗?

C++ boolean 数组作为位域?

假设我需要在一个结构中存储8个boolean值,但我只想将它们一起使用1个字节,那么我可以这样做:structmyStruct{boolb1:1;boolb2:1;boolb3:1;boolb4:1;boolb5:1;boolb6:1;boolb7:1;boolb8:1;};有了这个我可以做类似的事情myStructasdf;asdf.b3=true;asdf.b4=false;if(asdf.b1)...到目前为止这是正确的吗?(我其实不知道,我以前从未使用过位域)好的-但是否也可以创建一个包含8个boolean值的静态数组,这样它们将仅使用8位,但我仍然可以通过索引对它们进行寻址?