草庐IT

pseudo-typedef

全部标签

c++ - 区分 C++11 原始类型名称和 typedef 名称?

有没有办法区分类型的原始名称和该类型的typedef名称?例如:classC1{};typedefC1C2;C1和C2现在都命名相同的类型。在上述代码之后,是否存在不能用C2替换名称C1的情况(反之亦然)? 最佳答案 一个typedef创建一个别名,并且它们作为一个类型是无法区分的。另一方面,有一些特定的语法结构需要真实类型而不是类型定义(构造函数/析构函数的声明/定义......),但这是一个不同的问题。作为一种类型,它们是无法区分的。 关于c++-区分C++11原始类型名称和type

c++ - Typedef 适用于结构但不适用于枚举,仅适用于 C++

我有以下代码:test_header.h:typedefenum_test_enumtest_enum;enum_test_enum{red,green,blue};typedefstruct_test_structtest_struct;struct_test_struct{ints1;ints2;ints3;};测试.c:#include#includeintmain(){test_structs;s.s1=1;s.s2=2;s.s3=3;printf("Hello%d%d%d\n",s.s1,s.s2,s.s3);}test_cpp.cpp:extern"C"{#include}

c++ - 在 C++ 中使用 C 风格的 struct/typedef

我有一个混合使用C和C++的项目。在C头文件中,我有这样的代码:typedefstructmystruct*mystruct;structmystruct{//whateverstructneeds};为了在C++文件中使用它,我正在做:extern"C"{#include"mystruct.h"}所以你看到我正在创建一个使用相同名称的不透明指针。这在C中很好,但在C++中不行(因为要求在C中使用struct关键字实例化,但在C++中不行)。但是,在尝试编译C++代码时出现错误(声明冲突)。我认为使用extern"C"会使编译器将Cheader视为C,但它似乎仍将其用作C++。对这里发

c++ - 为什么他用 "typedef vector<double>::size_type"而不是用 "int"

我刚刚学习C++,并且正在使用AcceleratedC++。在一个vector例子中,作者使用了如下代码;typedefvector::size_typevec_sz;vec_szsize=homework.size;我知道typedefvector::size_typevec_sz;这样他就不必将下一个命令写成vector::size_typesize=homework.size;,但我的问题是他为什么不直接声明size改为整数?intsize=homework.size;这是因为我们使用了vector吗?如果是这样,是否意味着vector迭代器返回的值不能存储在常规变量中?

c++ - 这个typedef是什么意思?

在KennyKerr先生的thiscolumn,他定义了一个结构和一个typedef,如下所示:structboolean_struct{intmember;};typedefintboolean_struct::*boolean_type;那么这个typedef是什么意思呢?另一个问题是关于下面的代码:operatorboolean_type()constthrow(){returnTraits::invalid()!=m_value?&boolean_struct::member:nullptr;}“&boolean_struct::member”是什么意思?

c++ - 转发声明未命名结构的 typedef

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Forwarddeclarationsofunnamedstruct如果我有typedefstructtagPAGERANGE{intiFirstPage;intiLastPage;}PAGERANGE;我可以这样转发声明structtagPAGERANGE;typedefstructtagPAGERANGEPAGERANGE;但是我有的是typedefstruct{intiFirstPage;intiLastPage;}PAGERANGE;我不确定我该怎么做。我只想持有指向该结构的指针。现在我坚持要么包含一

c++ - 性能 : typedef vs wrapper class for primitive types?

我想在C++中定义一个新类型,它只是一些原始类型(在我的示例中,int可以是任何类型)。在此示例中,我将类型称为NodeId。我可以只使用typedefintNodeId。我想要NodeId的默认值,所以我会使用#defineNULL_NODE_ID-1。现在,我认为定义一个类而不是typedef会更好,以允许函数isValid()和构造nullNodeId的默认构造函数:classNodeId{intvalue;public:inlineNodeId():value(-1){}inlineNodeId(intvalue):value(value){}inlineoperatorint

C++ 语法/语义问题 : Reference to Function and typedef keyword

什么会typedefint(&rifii)(int,int)用于?这个“声明”之前的typedef是什么?我想把这看作typedef(int(&rifii)(int,int))[newname]但是[新名称]不像你那样存在typedefintINTEGER;以下语法的类似问题:typedefvoid(*PF)();PFedit_ops[]={&cut,&paste,©,&search};PFfile_ops[]={&open,&append,&close,&write};PF*button2=edit_ops;PF*button3=file_ops;button2[2]();t

c++ - typedef 相对于派生类的优势?

简单来说,doingsay和doingsay之间有什么(或有什么)区别classMyClassList:list{};对比typedeflistMyClassList;我能想到的唯一优点(也是它让我想到这个问题的原因)是,对于派生类,我现在可以轻松地将MyClassList声明为classMyClassList;没有编译器错误,而不是classMyClass;typedeflistMyClassList;我想不出有什么区别,但这让我想知道,是否存在可以使用简单派生类不能使用typedef的情况?或者换句话说,我有什么理由不应该更改我所有的typedef列表SomeClassList;到

c++ - 为什么我不能转发声明 typedef?

namespaceO{classA{};classA;//oktypedefAK;//okstructA;//ok(C++11):AisaclassbutforreferencesandpointerithavethesamemeaningclassK;//(1)error:Kisatypedef(ofaclass...)}namespaceU{typedefO::AA;classA;//(2)error:Aisatypedef(ofaclass...)}标准C++不允许这些情况(1和2)编译的原因是什么? 最佳答案 您感到困惑,或