草庐IT

pseudo-typedef

全部标签

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

c++ - 在 C++ 类中前向声明 typedef

在类中转发声明typedef的最佳解决方案是什么。这是我需要解决的一个例子:classA;classB;classA{typedefboost::shared_ptrPtr;B::Ptrfoo();};classB{typedefboost::shared_ptrPtr;A::Ptrbar();};我想我可以做到以下几点:boost::shared_ptrfoo();但是有更优雅的解决方案吗? 最佳答案 不幸的是,没有向前声明typedef这样的事情。但是,使用后期模板实例化有一个技巧:templateclassBImpl;temp

c++ - 在 C++ 类中前向声明 typedef

在类中转发声明typedef的最佳解决方案是什么。这是我需要解决的一个例子:classA;classB;classA{typedefboost::shared_ptrPtr;B::Ptrfoo();};classB{typedefboost::shared_ptrPtr;A::Ptrbar();};我想我可以做到以下几点:boost::shared_ptrfoo();但是有更优雅的解决方案吗? 最佳答案 不幸的是,没有向前声明typedef这样的事情。但是,使用后期模板实例化有一个技巧:templateclassBImpl;temp

部分模板的 C++ typedef

我需要像这样做一个typedef。templateclassX{};templatetypedefX,B,C>Y;我刚刚发现它在C++中不受支持。有人可以建议我如何通过其他方式实现同​​样的目标吗?谢谢,悟空。 最佳答案 如果您有C++0x/C++1x编译器,则可以使用稍微不同的语法(似乎编译器仍然不支持此功能):templateusingY=X,B,C>;您可以使用其他技术,例如在模板结构中定义封闭类型(如Pieter建议的那样),或滥用继承(尽可能避免):templateclassY:publicX,B,C>{};

部分模板的 C++ typedef

我需要像这样做一个typedef。templateclassX{};templatetypedefX,B,C>Y;我刚刚发现它在C++中不受支持。有人可以建议我如何通过其他方式实现同​​样的目标吗?谢谢,悟空。 最佳答案 如果您有C++0x/C++1x编译器,则可以使用稍微不同的语法(似乎编译器仍然不支持此功能):templateusingY=X,B,C>;您可以使用其他技术,例如在模板结构中定义封闭类型(如Pieter建议的那样),或滥用继承(尽可能避免):templateclassY:publicX,B,C>{};

c++ - c++ 中 typedef 和模板的常量引用

听说临时对象只能分配给常量引用。但是这段代码出错了#includetemplatetconst&check(){returnt();//returnatemporaryobject}intmain(intargc,char**argv){constint&resCheck=check();/*fine*/typedefint&ref;constreferror=check();/*error*/return0;}得到的错误是invalidinitializationofreferenceoftype'int&'fromexpressionof'constint'

c++ - c++ 中 typedef 和模板的常量引用

听说临时对象只能分配给常量引用。但是这段代码出错了#includetemplatetconst&check(){returnt();//returnatemporaryobject}intmain(intargc,char**argv){constint&resCheck=check();/*fine*/typedefint&ref;constreferror=check();/*error*/return0;}得到的错误是invalidinitializationofreferenceoftype'int&'fromexpressionof'constint'

c++ - 为什么 typedef struct 会产生链接失败

所以我有一段看起来像这样的代码。typedefstruct{intfoo;intbar;voidfoobar(int,char*);}mystruct;和voidmystruct::foobar(intx,char*y){return;}和mystructobj;obj.foobar(17,"X");这一切都可以完美地编译、链接和运行。除非它没有。在一个编译器上它可以工作,而在另一个编译器(AndroidGCC)上它失败并出现链接错误:不满意的引用。如果我这样更改它,它会编译并链接。structmystruct{intfoo;intbar;voidfoobar(int,char*);}

c++ - 为什么 typedef struct 会产生链接失败

所以我有一段看起来像这样的代码。typedefstruct{intfoo;intbar;voidfoobar(int,char*);}mystruct;和voidmystruct::foobar(intx,char*y){return;}和mystructobj;obj.foobar(17,"X");这一切都可以完美地编译、链接和运行。除非它没有。在一个编译器上它可以工作,而在另一个编译器(AndroidGCC)上它失败并出现链接错误:不满意的引用。如果我这样更改它,它会编译并链接。structmystruct{intfoo;intbar;voidfoobar(int,char*);}