草庐IT

pseudo-typedef

全部标签

c++ - 禁用 typedef 之间的隐式转换

在C++11中,是否有一种干净的方法来禁用typedef之间的隐式转换,或者您是否必须做一些讨厌的事情,例如将您的int包装在一个类中并定义和删除各种运算符?typedefintFoo;typedefintBar;Foofoo(1);Barbar(2);bar=foo;//Implicitconversion! 最佳答案 HelloWorld解释了为什么你所拥有的东西不能工作。您将需要通常称为“强”的typedef来做您想做的事情。一个示例实现是BOOST_STRONG_TYPEDEF:#includeBOOST_STRONG_TY

c++ - 如何在 C++ 中将 typedef 用于泛型类

我正在尝试使用unordered_map。但是在某些服务器中,我们没有tr1库。在这些情况下,我想使用map。所以,我想编写一个头文件,我将在其中使用以下行之一。typedeftr1::unordered_maphashmap;typedefmaphashmap;我的问题是我在这里使用不同类型的map。mapmapmap>..etc如果我可以使用typedef为map或unordered_map作为hashmap的别名,那么我可以将map用作hashmap,hashmap在代码中。有什么方法可以做到这一点,或者如果有更好的方法,请建议我。谢谢维诺德 最佳答案

c++ - 在基类中使用派生类的 typedef

我希望派生类成为模板类的后代。该类取决于后代的成员。简而言之,我希望这段代码能够编译:structIBootParams{virtualboolGetImmediate()=0;};templatestructTBootBootParams{typenameT::TransTypetransferType;typenameT::UseAbort_useAbort;boolGetImmediate(){if(transferType==T::e1){returnuseAbort.someFlag;}returnfalse;}};structBootBootParams:publicTBo

c++ - typedef 复杂 STL 映射时的命名约定是什么?

1)typedef'ing时实际使用的约定是什么类似typedefstd::map[SomeStandardName>]typedefstd::map>2)你通常把typedef:全局头文件放在类的地方吗?3)你是typedef迭代器还是constmap版本?4)假设您有两个不同概念使用的映射,您是否为它们创建了两个单独的typedef?typedefmapIDToSomeClassMap;typedefmapDescriptionToSomeClassMap;谢谢编辑#1我对typedefSTL映射特别感兴趣,例如typedefmapIdToDescriptionMap或typede

C++ typedef 类使用

为什么要使用typedefclass{}Name?我在IBMC++doc中学到了这一点,这里没有使用提示。 最佳答案 这是“C”语言的遗留问题。在C中,如果你有structPt{intx;inty;};那么要声明这个结构的一个变量,你需要这样做structPtp;typedef帮助您在C中避免这种情况typedefstruct{intx;inty;}Pt;现在你可以做Ptp;在C中。在C++中,这是不必要的,因为classPt{intx;inty;};允许你做Ptp;它在C++中没有像在C中那样提供符号上的好处。OTOH,它会导致限

c++ - 如何删除 VS 警告 C4091 : 'typedef ' : ignored on left of 'SPREADSHEET' when no variable is declared

此警告在我的代码中由同一个声明多次触发,内容如下://SpreadsheetstructuretypedefstructSPREADSHEET{intID;//IDofthespreadsheetUINTnLines;//NumberoflinesvoidCopyFrom(constSPREADSHEET*src){ID=src->ID;nLines=src->nLines;}};我不想只是关闭该警告,而是更改代码,以免出现警告!注意:我不想在这里声明任何变量(它是一个头文件),只定义结构'SPREADSHEET'应该包含的内容... 最佳答案

c++ - 理解复杂的 typedef 表达式

这个问题在这里已经有了答案:Typedeffunctionpointer?(6个回答)关闭5年前。我想知道这个表达是什么意思??typedefbool(*compareShapes)(constShape*s1,constShape*s2);Shape是一个类。 最佳答案 您应该使用using语句。它使相同的声明更易于阅读:usingcompareShapes=bool(*)(constShape*,constShape*);现在看到了吗?类型在等号之后。它是一个指向函数类型的指针。也可以这样声明://functionpointer

c++ - 引用自身的 typedef

typedefbool(*Foo)(Fooa,Foob);如何声明一个在参数中接受自身的函数指针? 最佳答案 间接:structFoo{typedefbool(*FooPtr)(Fooa,Foob);Foo(FooPtrp):p(p){}booloperator()(Fooa,Foob)const{returnp(a,b);}FooPtrp;};structBar{Bar(Foof):some_callback(f){}Foosome_callback;};boola_callback(Fooa,Foob){returnfalse;

c++ - 智能指针、typedef 和前向声明

我喜欢使用智能指针,并且看到一些代码很好地利用了typedef使它们更漂亮。例如:structA{typedefboost::shared_ptrpointer;};允许我写:A::pointera(newA);但我的typedef幸福遇到了一个小障碍:-/,前向声明...想象一下这个场景:structB;structA{boost::shared_ptrb_;};structB{boost::shared_ptra_;};效果很好,但我想稍微清理一下。不幸的是,这不起作用structB;structA{typedefboost::shared_ptrpointer;B::pointe

c++ - typedef void FOO 与 #define FOO void 在函数签名中的含义

这个问题在这里已经有了答案:void,VOID,CandC++(3个回答)关闭7年前。在浏览一些大量混合C和C++的源代码时,我遇到了以下内容(为了保护公司的工作,稍作修改,含义保持不变):/**TypedefsofvoidaresynonymouswiththevoidkeywordinC,*butnotinC++.InordertosupporttheuseofMY_VOID*inplaceofthevoidkeywordtospecifythatafunctiontakesno*arguments,itmustbeamacroratherthanatypedef.*/#defin