草庐IT

C语言【自定义数据类型、typedef、动态内存分配】

C语言【自定义数据类型、typedef、动态内存分配】一、自定义数据类型。​ 关于下面讲到的所有自定义数据类型(enum、struct、union),有一点要说的是:定义类型不是声明变量,做这步操作时不分配内存,也不能在定义类型时赋值(枚举那个不是赋值,是做一个限定,赋值时赋限定之外的值也不报错。)。1、typedef(给类型起别名的关键字)//C语言中给数据类型起别名的同时不能声明变量。//一个错误的示范://typedefintIntegeri; //不能在这里声明i。自定义数据类型同理。//给指针类型起别名typedefint*intptr;typedefchar*String;//给数

c++ - 泛型类的 Typedef(别名)

在C++中是否可以创建模板类的别名(不指定参数)?typedefstd::mapmyOwnMap;不起作用。如果不是,有什么好的理由吗? 最佳答案 在C++98和C++03中,typedef只能用于完整类型:typedefstd::mapIntToIntMap;在C++0x中,有一个新的语法来替代typedef:usingIntToIntMap=std::map;它也支持template别名:template,typenameAllocator=std::allocator>>usingmyOwnMap=std::map;给你:)

C++ - 如何在函数声明中使用模板 typedef 解决方法?

我想在各种地方使用模板化的typedef,尤其是在声明自身模板化函数时。这是我目前的尝试templatestructtype{typedefstd::vectorsometype;}templatevoidsomeFunction(type::sometype&myArg);(注意std::vector只是一个例子)。这不起作用并给出编译器错误“'voidsomeFunction'的模板声明”。我已经知道我需要放一个typename在type前,即templatevoidsomeFunction(typenametype::sometype&myArg);有效。但至少可以说,这个解决方

c++ - 调用 lambda 而不将其绑定(bind)到标识符

浏览一些互联网板我遇到了这个小挑战:"Implementarecursiveanonymousfunctioninyourfavoritelanguage"显然这很容易使用std::function/函数指针。我真正感兴趣的是,如果不将lambda绑定(bind)到标识符,这是否可行?类似于(忽略明显的无限递归):[](){this();}(); 最佳答案 当然,在C++中,要调用任何函数,您必须将它绑定(bind)到某处的标识符,这仅仅是由于语法限制。但是,如果您接受充分未命名的参数,则可以在C++中创建一个版本的y组合器,它可以

c++ - 错误 C2823 : a typedef template is illegal - function pointer

我想使用模板定义一个函数指针类型。但是,VS2013我认为“typedef模板是非法的”。我想写这样的东西:templatetypedefvoid(*FuncPtr)(void*object,SD*data);不幸的是,这无法编译。我想保持简短。基本上我需要为一个函数指针定义一个类型,它的参数是一个模板类。 最佳答案 自C++11起,您可以使用using关键字的效果非常像typedef,它允许模板:templateusingFuncPtr=void(*)(void*,SD*);在此之前,您必须将模板与typedef分开:templa

c++ - 确保使用自定义类型

考虑thisanswer为了typedefs对基本类型的好处以及使用它们的原因,是否有任何方法可以确保在您的项目中您没有使用基本类型并使用了typedef对应物? 最佳答案 如果您真的,绝对想要禁止原生类型但允许typedefs,我想您总是可以这样做:#include#defineintplease_use_stdint_typedefs_rather_than_native_typesintmain(){int32_tgood;//Goodtypedef.intevil;//Evilnativetype.}$gcc-cint_fo

c++ - 我必须对每个头文件进行 typedef 吗?

假设我有一个std::vector的std::string//Foo.hclassFoo{std::vectormVectorOfFiles;}然后我用了typedef使其成为StringVector类型。//Foo.htypedefstd::vectorStringVector;classFoo{StringVectormVectorOfFiles;}如果我有另一个需要StringVector的类(class)对象...//Bar.hclassBar{Bar(constStringVector&pVectorOfFiles);//Iassumethisproducesacompile

c++ - 尝试与 typedef 交 friend 时出现 "elaborated type refers to typedef"错误

假设我有以下代码(一个简单的CRTP类层次结构)。我想对基类类型进行typedef以节省自己的输入(在我的实际代码中,我多次使用基类类型并且基类采用多个模板参数),并且我需要与基类交friend,因为我想保留实现私有(private)。templateclassBase{public:voidfoo(){*static_cast(this)->foo_i();}};templateclassDerived:publicBase>{public:typedefclassBase>BaseType;private://Thishereistheoffendinglinefriendclas

c++ - C++ 中的 typedef 和运算符重载

假设我typedef一个整数或整数数组或任何已知类型:typedefintint2然后我为int2对重载运算符*,现在如果我将变量a和b初始化为int。那么我在a和b之间的*会是重载的*吗?我如何实现重载一个int,同时又按原样使用*作为int。我应该创建一个新类型吗? 最佳答案 假设您在谈论C++:运算符重载必须至少采用一个用户定义类型的参数。typedef没有改变任何东西,因为它没有引入新类型,只是提供了一个同义词。 关于c++-C++中的typedef和运算符重载,我们在Stack

c++ - 我可以将 enable_if 与 typedef 一起使用吗?

我想定义一个类型取决于某些条件的变量。我想要这样的东西:typedeftypenameenable_if::typeType;typedeftypenameenable_if::typeType;但是编译器说我重新定义了类型。我该怎么做? 最佳答案 CanIuseenable_iftogetherwithtypedef?不,你不能。std::enable_if如果条件为假,则保留类型未定义。只有条件为真,成员type才被定义;templatestructenable_if;IfBistrue,std::enable_ifhasapu