草庐IT

c++ - 成员模板特化及其范围

在我看来,C++不允许在命名空间和全局范围以外的任何范围内对成员模板进行专门化(MSVSC++错误C3412)。但对我来说,在派生类中专门化基类的主要成员模板是有意义的,因为派生类就是这样做的——专门化基类中的东西。例如,请考虑以下示例:structBase{templatestructKind{typedefTtype;};};structDerived:publicBase{/*NotAllowed*/usingBase::Kind;templatestructKind{typedefdoubletype;};};intmain(void){Base::Kind::typef;//

c++ - 如何从 C++ 源代码中提取所有类型定义、结构和 union

我继承了一个包含数百个文件的VisualStudio项目。我想从每个.h/.cpp文件中提取所有类型定义、结构和union,并将结果放入一个文件中。每个typdef/struct/union都应该在结果文件中占一行。这将使排序变得容易得多。typdefintmyType;structmyFirstStruct{chara;intb;...};unionPart_Number_Serial_Number_Part_2_Response_Message_Type{struct{Message_Response_Head_TypeHead;Part_Num_Serial_Num_Part_2

c++ - 一个c++语法问题(一种结构方法)

在下面的代码中,:next(next_par),info(info_par)是什么意思?structlist_node:publicmemory::SqlAlloc{list_node*next;void*info;list_node(void*info_par,list_node*next_par):next(next_par),info(info_par)/*what'sthemeaningof:next(next_par),info(info_par)?*/{}list_node(){info=0;next=this;}};看起来是想为info(info_par)赋值info_p

C++ 初始化列表

我必须用structMHD_OptionItem类型的元素填充std::vector。这个结构有这个实现:structMHD_OptionItem{enumMHD_OPTIONoption;intptr_tvalue;void*ptr_value;};我试过这种方式:vectoriov;if(...)iov.push_back({MHD_OPTION_NOTIFY_COMPLETED,requestCompleted,NULL});if(...)iov.push_back({MHD_OPTION_CONNECTION_TIMEOUT,connectionTimeout});[....]

c++ - C/C++结构问题

假设您有一个.cpp文件(即使用MSVC等C++编译器编译)。在该文件中,您按以下方式定义了一个struct:structPixel{floatx,y;};在同一个文件中,您有一行代码将调用一个C函数,该函数需要一个等于Pixel的Cstruct。如果你写:Pixelmy_pixel//setmy_pixeltosomethingc_func(&my_pixel);会成功吗?我的意思是,C++编译器将创建对象my_pixel,但它会将其传递给编译为C代码的函数(我只有该库的.lib)。 最佳答案 如果头文件正确,它将工作,假设C编译

c++ - C++模板实例化的时机

我想知道是否有人知道为什么以下两段代码的行为非常不同。我能理解为什么第二个不起作用,但为什么第一个起作用?在同一个地方intx=gc.f();模板应该被实例化,所以会出现同样的错误,但为什么实际上没有错误?a.cpp#includeusingnamespacestd;templatestructA{structB{};};templatestructC{typedefA>D;intf(){typenameD::Bp;return0;}};Cgc;intx=gc.f();templatestructA>{structB{B(){cout输出B::B()B::~B()和a2.cpp#inc

c++ - 在 C : Will alignment break my neck? 中伪造继承

我有一个C结构,用于各种C和C++代码(通过extern"C")。#ifdef__cplusplusextern"C"{#endiftypedefstructAA;structA{/*somemembers*/};#ifdef__cplusplus}#endif分配、初始化和释放是由我控制的独立成员函数完成的,但我不控制对成员的访问,因为它们可以在任何地方访问。问题是,我无法更改整个系统中大量使用的header中struct的定义,但我仍然想扩展类型并添加一些成员。由于这必须编译为C++和C,我不能简单地创建派生类型structB:publicA。所以我的想法是将这种类型添加到cpp文

c++ - C++中的结构继承与类继承

我刚刚从这个发现Q/A结构在C++中是可继承的,但是,这是一个好习惯,还是使用类更可取?在哪些情况下是可取的,在哪些情况下不是?我从来不需要这个,但现在我有一堆不同类型但经度相同的消息。我将它们以二进制形式放在一个char数组中,然后使用memcpy将它们复制到结构中以填充其字段(我不知道是否可以使用std::copy来完成)。我想如果能够从具有通用header的基本结构继承每个结构会很棒,这就是我搜索它的原因。所以第二个问题是:如果我对类执行此操作,是否可以从缓冲区到类执行memcpy(或std:copy)? 最佳答案 是否可以使

c++ - 如何将 BOOST_FUSION_ADAPT_STRUCT 与子结构一起使用?

例如,假设我有以下结构/子结构定义:structaddress_rec{std::stringm_street;std::stringm_state;unsignedm_zip;};structemployee_rec{std::stringm_name;address_recm_address;};我应该如何在employee_rec上使用BOOST_FUSION_ADAPT_STRUCT? 最佳答案 调整两个结构,它也有助于将您的语法分解为每个结构类型,(地址规则和包含地址规则的员工规则)structaddress_rec{st

c++ - 将变量分配给字符串

我是学习结构的初学者。我的代码有点问题。我知道这不是分配字符串的方式。有人可以告诉我怎么做吗?该网站教我这样做。#include#include#include#defineMAX_PERSON50#defineNAME_LENGTH30#defineADDR_LENGTH60structplayer{charname[NAME_LENGTH];charaddress[ADDR_LENGTH];intsalary;};intmain(intargc,char*argv[]){structplayersingleTeams;structplayermultipleTeams[MAX_PE