草庐IT

typedeffing

全部标签

c++ - 为什么 C++11 中没有模板化的 typedef?

这个问题在这里已经有了答案:WhydoesC++11nothavetemplatetypedef?(1个回答)关闭5年前。为什么委员会决定不批准模板化typedef和模板化using?templateusingmy_vector=std::vector;是合法的。但是templatetypedefstd::vectormy_vector;违法吗?更新。问题WhydoesC++11nothavetemplatetypedef?没有回答。

c++ - 可以在模板化的 typedef 上使用模板特化吗?

我想做类似下面的事情(在c++11、c++14中;而不是c++17):templateusingpartner=void;templateusingpartner=X;templateusingpartner=Y;templateusingpartner=Z;但是我得到一个编译错误---error:expectedunqualified-idbefore‘using’---关于第一个模板特化。这样的事情可能吗?(我已经知道我可以使用其中包含using语句的模板化类。我希望直接使用using语句而不使用类包装器,因为它更简单,更多优雅。如果有其他简单、优雅的解决方案,请分享!)

c++ - TypeDef 作为可重写的类特性

如果我有一个包含多个typedef的类'd变量,像这样:classX{typedeftokenTokenType;booldoStuff(){TokenTypedata;fillData(&data);returntrue;}};有什么方法可以覆盖typedef对于TokenType在派生类中?注意这不是使用模板的好地方(这已经是一个模板化类,任何更改都可能导致[编辑:无限]递归定义[classX>等]。) 最佳答案 你可以做的是阴影,但不能覆盖。也就是说:您可以使用自己的TokenTypetypedef定义派生类Y,但这只会在有人

c++ - 带模板的 typedef

templatestructA{typedefintInt;A::Intb;//Line1(fails)Intc;//Line2(compiles)};intmain(){Ax;x.c=13;}错误error:ISOC++forbidsdeclarationof‘Int’withnotypeerror:extraqualification‘A::’onmember‘Int’error:expected‘;’before‘b’第1行失败但第2行编译。为什么? 最佳答案 你需要一个typenametypenameA::Intb;type

c++ - 为什么在通过 CRTP 访问派生类中的 typedef 时出错?

我无法理解为什么下面的代码无法编译——有人可以解释一下吗?如何从基类访问派生类中的typedef?templatestructTest{templatetypenameDerived::value_typefoo(T);};structDerived:publicTest{typedefintvalue_type;}; 最佳答案 申报时Derived,Derived还不是一个完整的类型——您才刚刚开始声明它!因此在特化Test,模板参数是一个不完整的类型,因此您不能引用嵌套名称,例如Derived::value_type--这是循环

c++ - 前向声明一个 typedef

我有一个很大的头文件(~10000行),它是由我无法控制的脚本/程序自动生成的。为了避免在我的类声明中包含这个文件,我转发声明了我需要的几个类型:--我的类.hnamespacebl{classTypeA;classTypeB;}//Otherstuffandmyclassdefinition...现在发现TypeA和TypeB不是类名,而是在自动生成的文件中定义为:typedefSomeUnspecifiedClassNameTypeA;typedefAnotherUnspecifiedClassNameTypeB;SomeUnspecifiedClassName我的意思是我不能转发

c++ - Typedeffing 函数(不是函数指针)

typedefvoidint_void(int);int_void是一个接受整数且不返回任何内容的函数。我的问题是:它可以“单独”使用吗?没有指针吗?也就是说,是否可以将它简单地用作int_void而不是int_void*?typedefvoidint_void(int);int_voidtest;此代码编译。但是test能否以某种方式使用或分配给某物(无需强制转换)?/*Eventhisdoesnotwork(error:assignmentoffunction)*/typedefvoidint_void(int);int_voidtest,test2;test=test2;

c++ - 如何将 typedef 变量分配为静态

谁能告诉我下面程序中的错误。#includeusingnamespacestd;classA{public:typedefintcount;staticcountcnt;};countA::cnt=0;intmain(){return0;}错误计数没有命名类型 最佳答案 您必须使用A::countA::cnt=0;,因为您的typedef是在类A的范围内定义的。即要么将typedef移到类之外,要么像上面那样使用范围解析。 关于c++-如何将typedef变量分配为静态,我们在Stack

c++ - C++ 嵌入式应用程序是否应该为内置 C++ 类型使用带有 typedef 的通用 header ?

通常的做法是我努力避免直接使用内置类型,而是包含一个standardtypes.h,其中包含如下项目://\Common\standardtypes.htypedefdoubleFloat64_T;typedefintSInt32_T;几乎所有组件和源文件都依赖于此header,但有些人认为需要抽象类型的大小(实际上不需要)。这是一个好的做法吗(尤其是在大型组件化系统中)?有更好的选择吗?还是应该直接使用内置类型? 最佳答案 您可以在头文件中使用现代C和C++实现中可用的标准化版本:stdint.h它有类似的类型:uint8_t、i

c++ - 按值传递 typedef(固定大小)数组

我很难理解数组的typedef模式。typedefcharChar10[10];voidfun(Char10a)//notpassingreference(interestedinpassbyvalue){if(typeid(Char10)==typeid(char*))throw0;//为什么fun()接受按值排列的不同大小的数组?char[10]和char[11]不是不同的类型吗?编辑:对于那些说它衰减为指针的人,请参阅我编辑的代码。char[10]和char*似乎不匹配。 最佳答案 在这两种情况下,数组退化为指针类型,而您的函