草庐IT

typedeffing

全部标签

c++ - 这里的typedef有什么用?

我很难弄清楚typedef这里有什么用-typedefcharTYPE_SSOSettingError;typedefvoid(*ans_executeDomainRegistration)(TYPE_SSOSettingError);从第一行我了解到TYPE_SSOSettingError被定义为char。从下一行我可以看出ans_executeDomainRegistration是一个指向函数的指针,该函数的返回类型为void并采用char在这种情况下是TYPE_SSOSettingError那最后一行typedef有什么用呢? 最佳答案

c++ - 弄清楚晦涩的指针typedef

typedefsolution_type(*algorithm_ptr_type)(problem_typeproblem,void(*post_evaluation_callback)(void*move,intscore)/*=NULL*/);请帮帮我!谢谢 最佳答案 这意味着,algorithm_ptr_type是一个指向返回solution_type的函数的指针,其参数为:问题problem_typepost_evaluation_callback这又是一个函数指针,它接受两个参数(void*和int),并返回void.同样

c++ - C/C++ : size of a typedef struct containing an int and enum == sizeof(int)?

我在我的Ubuntu(i686)上使用gcc版本4.3.3。我写了一个精简的测试程序来描述我缺乏理解和我的问题。该程序应告诉我我实现的结构的大小。所以我有一个typedefstruct用于Message和一个小的main来玩:#includetypedefstruct{intsize;enum{token=0x123456};}Message;intmain(intargc,char*argv[]){Messagem;m.size=30;printf("sizeof(int):%d\n",sizeof(int));printf("sizeof(0x123456):%d\n",sizeo

c++ - typedef 标准容器?

我想做typedefdequetype;//error,useofclasstemplaterequirestemplateargumentlisttypecontainer_;但是那个错误阻止了我。我该怎么做? 最佳答案 你不能(直到C++0x)。但它可以模拟:templatestructContainerOf{typedefstd::dequetype;};用作:ContainerOf::typecontainer_; 关于c++-typedef标准容器?,我们在StackOverf

c++ - std::function 参数列表和 typedef

我有一个类似这样的typedef:typedefstd::functionMyFunction;在我的代码中某处是这样使用的:MyFunctionfunc=[](intarg1,floatarg2){/*dosometing*/};问题是,每次我更改函数的参数数量(例如,我添加第三个参数chararg3)时,我都被迫在我使用MyFunction的所有代码中更新它(即使这些根本不使用参数。而且我懒得那样做。有没有办法从它的类型中获取std::function的参数列表?(我的意思是)这样函数创建看起来像那样?:MyFunctionfunc=[](MyFunction::args){/*d

c++ - Boost graph typedef c++ 结构的前向声明

简短的问题描述:基本上我想要structType;typedefcontainerMyType;structType{MyType::sometypemember;}现在,我该怎么做?实际问题:对于BoostSuccesiveShortestPath算法,我需要将我的前向边缘映射到它们的反向。我有以下代码:structVertexProperty{};structEdgeProperty;typedefboost::adjacency_listDirectedGraph;structEdgeProperty{doubleedge_capacity;//capacity:1forforw

c++ - 如何从对象实例中获取成员 typedef

在MSVC2010中给出如下代码:错误C2039:“my_type”:不是“全局命名空间”的成员templateclassC{public:typedefTmy_type;};Cc;autof=[&c](){decltype(c)::my_typev2;//ERRORC2039};我找到了一个蹩脚的方法来解决它,但我想知道当你只有一个对象实例时获取typedef的正确方法是什么。 最佳答案 从一堆非常有用的评论中,我得到了一个可行的解决方案。感谢大家。remove_reference作为身份对象具有双重用途。templateclas

c++ - 模板的 typedef 包括 char[][] - 适用于 VS2008 但不适用于 gcc

我有一些正在使用的库代码。它在VisualStudio(2008)下编译和工作,但不是GCC(v4.8.4.)在标题中我们有:externconstcharmenu_styles[MENU_COUNT][MAX_LEN];typedefSysEnumMenuStyleEnum;SysEnum在哪里(在另一个文件中定义):templateclassSysEnumgcc遇到错误:error:‘menu_styles’cannotappearinaconstant-expression我完全同意。(此外,它是constchar*转换为char*)。我希望VS2008只是用constchar*

c++ - 转发声明可能的 typedef c++0x

我从Forwarddeclareaclass'spublictypedefinc++这个问题的答案中了解到,在C++中前向声明可能是typedef的东西是不可能的。是否可以在C++0x中完成此问题的要求?否则,进行如下更改:classX{...};typedefXZ;到classY{...};typedefYZ;破坏客户端代码。我认为不应该这样,因为typedef的要点是它们应该使底层类型对客户端透明,因此您可以在不破坏客户端代码的情况下更改实现。澄清基本上,假设我们有这两个选项:classX{...};typedefXZ;//(1)或classZ{...};//(2)我希望能够在客户

c++ - 从模板化父访问子 typedef

为什么下面的不编译?templatestructBase{typenameChild::Typet;//Doesnotcompile."NotypenamedTypeinChild"};structDerived:publicBase{typedefintType;};为什么Base无法访问其子类型?我用静态函数而不是typedef尝试了同样的方法,效果很好。我尝试了GCC4.4.2和clang3.0。 最佳答案 这种代码将无法工作,因为在实例化Base时Derived尚未完全定义。它基本上是一个不完整的类型。备选方案可以从简单到非