草庐IT

c++ - 我们可以通过实例访问 typedef 类型吗?

我想知道,for(std::map>::iteratorit=mymap.begin();it!=mymap.end();++it){//dostuff}为什么我不能这样写:for(mymap::iteratorit=mymap.begin();it!=mymap.end();++it){//dostuff}当然,对map进行类型定义会使第一个代码不那么冗长-但这不是我的意思。编译器知道mymap的类型,那么为什么不让它解析mymap::iterator呢?是否存在无法通过实例访问iterator的原因? 最佳答案 ::是一个范围解

C++ typedef 与未详细说明的继承

我有一个由嵌套的STL容器组成的数据结构:typedefstd::mapSmValueProb;typedefstd::mapSmGuard;typedefstd::mapSmTransitions;typedefstd::mapSmMachine;这种形式的数据只在我的程序中短暂使用,除了简单地存储它们的数据之外,没有太多的行为可以附加到这些类型。然而,编译器(VC++2010)提示生成的名称太长。将类型重新定义为STL容器的子类而无需进一步详细说明似乎可行:typedefstd::mapSmValueProb;classSmGuard:publicstd::map{};classS

c++ - GCC 中的结构对齐(是否应在 typedef 中指定对齐?)

抱歉问了一个愚蠢的问题,但如果我需要确保结构/类/union的对齐,我应该在typedef声明中添加attribute((aligned(align)))吗?classmyAlignedStruct{}__attribute__((aligned(16)));typedefmyAlignedStructmyAlignedStruct2;//WillmyAlignedStruct2bealignedby16bytesornot? 最佳答案 shouldIaddattribute((aligned(align)))totypedefde

c++ - 比较 typedef 是否相同类型

我正在使用C++(不是11),并使用一些对整数数据类型具有不同typedef的库。有什么办法可以断言两个typedef是同一类型吗?我自己想出了以下解决方案..安全吗?谢谢templatestructTypeTest{staticvoidCompare(constTypeTest&other){}};typedefunsignedlonglongUINT64;typedefunsignedlonglongUINT_64;typedefunsignedintUINT_32;intmain(){TypeTest::Compare(TypeTest());//passTypeTest::Co

C++ typedef enum 和 just enum

这个问题在这里已经有了答案:WhydoyouusetypedefwhendeclaringanenuminC++?(9个回答)关闭8年前。到底有什么区别:typedefenum{something1,something2,.....somethingN}myEnum;刚刚结束enummyEnum{something1,something2,.....somethingN};我知道在第一种情况下我定义了未命名的枚举,当然,只是想知道哪种方法更好,为什么?

c++ - C++中typedef的作用

typedefset>SetInt;请解释这段代码的作用。 最佳答案 这意味着每当你创建一个SetInt,您实际上是在创建set>的对象.例如,它使下面两段代码等价:SetIntsomevar;和set>somevar; 关于c++-C++中typedef的作用,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1585515/

c++ - 将 C++ 与 Objective-C 结合使用,如何修复 "Conflicting declaration ' typedef int BOOL'"?

我有很多C++代码,最初是在PC上构建的。我试图让它在Mac上与Objective-C一起工作。为此,我创建了一个Objective-C框架来容纳C++代码并添加了一个瘦包装器。但是我在我的C++代码中遇到了typedef问题。当我在PC上使用C++时,我使用了WinDef.h中定义的BOOL变量。因此,当我在Mac上移动所有内容时,我添加了typedefintBOOL;以确保BOOL变量仍会按预期编译。但是当我尝试编译时出现错误:“Conflictingdeclaration'typedefintBOOL'”。我假设这是因为BOOL是Objective-C中的关键字,因此已经定义了。

c++ - 特征中的 typedef 与类中的 typedef

出于教育目的,我正在查看Eigen源代码。我注意到对于每个具体类模板X在层次结构中,有一个internal::traits定义。一个典型的例子可以在Matrix.h中找到:namespaceinternal{templatestructtraits>{typedef_ScalarScalar;typedefDenseStorageKind;typedefDenseIndexIndex;typedefMatrixXprXprKind;enum{RowsAtCompileTime=_Rows,ColsAtCompileTime=_Cols,MaxRowsAtCompileTime=_Max

c++ - 如何从模板化基础中消除多个继承的 typedef 的歧义?

编辑:我正在为Windows使用tdm-gcc-4.7.1-2不知道如何解决这个问题。我想将其用作一种类型列表,让我知道我正在尝试使用B中不存在的类型的类型定义。templatestructA{typedefpairtype;};structB:A,A{};B::typefoo;//won'tcompile,ambiguousreference,asexpectedB::A::typebar;//compilesfine??:(有没有办法让它在A上失败?(以及任何其他A未被B继承的),或另一种解决方法?我想我可以使用tuple并递归我的方式,做一个is_same将每个元素与我提供给元函

c++ - 我可以 typedef 模板模板参数吗?

在C++库头文件中,我们有时会看到以下内容以提高类内代码的易读性:templateclassC{public:typedefMyExplicitelyLongTemplateParameterP;//Use"P"andkeepyoursanity.};我的问题是,可以对模板模板参数做同样的事情吗?templatetypenameMyExplicitelyLongTemplateParameter>classC{public:typedef/*???*/P;//Use"P"andkeepyoursanity.}; 最佳答案 你不能创建