草庐IT

pseudo-typedef

全部标签

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.}; 最佳答案 你不能创建

c++ - 我可以在函数定义中使用函数 typedef 吗?

我已经定义了:typedefintFunkyFunc(intx);现在,我希望能够在FunkyFunc类型的函数定义中使用此typedef,例如FunkyFuncf{return2*x;}或FunkyFuncf(intx){return2*x;}或FunkyFuncf(x){return2*x;}我可以做与上述任何一项类似的事情吗?它们似乎都无法编译。 最佳答案 这是C++标准部分8.3.5Functions段落中的格式错误>10说:Atypedefoffunctiontypemaybeusedtodeclareafunctionb

C++:在 MSVC 中使用 __stdcall 回调 typedef

这个类型定义:typedefDWORDWINAPI(*CM_Open_DevNode_Key)(DWORD,DWORD,DWORD,DWORD,PHKEY,DWORD);在BorlandCpp中编译良好,但是,当我在msvc中编译它时,我必须删除WINAPI(它只是__stdcall的别名):typedefDWORD(*CM_Open_DevNode_Key)(DWORD,DWORD,DWORD,DWORD,PHKEY,DWORD);为什么会这样?我可以安全地删除WINAPI部分吗?更新:我必须从typedef中删除“WINAPI”,否则我会得到errorC2059:syntaxerr

c++ - 跨命名空间的 typedef 解析

我目前对“使用(命名空间)”语句在C++中的工作方式感到困惑。我有://somewhereinincludedheaderstypedefunsignedintuint;namespacemine{typedefunsignedintuint;}namespaceother{usingnamespacemine;voidfoobar(){uintoffender=i;}}结果(解释):对“uint”的引用不明确。候选人是typedefunsignedintuint和typedefunsignedintmine::uint同时,当我这样做的时候namespaceother{usingna

c++ - 这个 typedef 定义是什么意思?

我看过以下(C++):typedefn*(m)(constn*,constn*);它是什么意思,如何使用?我的理解是:typedefn(*myFunctP)(constn*,constn*);但是和上面的typedef有什么区别呢?(希望这不是重复的,没有找到类似的东西......) 最佳答案 我问了geordi为我赢得一些代表:;structn{};typedefn*(m)(constn*,constn*);functiontaking2pointerstoconstantnsandreturningapointertoanC类型

c++ - 如何typedef指向返回方法指针的方法的指针?

基本上我有以下类(class):classStateMachine{...StateMethodstateA();StateMethodstateB();...};stateA()和stateB()方法应该能够返回指向stateA()和stateB()的指针。如何对StateMethod进行类型定义? 最佳答案 GotW#57说要为此目的使用具有隐式转换的代理类。structStateMethod;typedefStateMethod(StateMachine::*FuncPtr)();structStateMethod{State

c++ - 内部 typedef 的变化取决于父类

我放弃了,请帮忙解释一下这个行为。我在下面给出的示例是我能想到的最简单的示例,但它总结了问题(在启用了c++14的Cygwin上使用g++4.9.2)。我想创建一个行为类似于std::mem_fn的类。这是我的类(class):templatestructproperty{staticRget(constT&t){return(t.*P)();}};其中R是返回类型,T是我感兴趣的对象的类型。第三个模板参数是指向成员函数的指针。到目前为止,还不错。然后我创建一个简单的类,它包含一个整数,如下所示classdata_class{public:unsignedget_data()const