草庐IT

pseudo-typedef

全部标签

c++ - 有人可以解释这个 C++ typedef 吗?

在很长一段时间没有使用C++之后,我才开始使用它。虽然其中大部分是有道理的,但我发现了一些位confuddling.例如,有人可以解释一下这条线的作用:typedefbool(OptionManager::*OptionHandler)(constABString&value); 最佳答案 它将OptionHandler类型定义为指向OptionManager类的成员函数的指针,并且该成员函数接受constABString&类型的参数并返回bool。 关于c++-有人可以解释这个C++t

c++ - typedef 共享指针的最佳策略是什么?

我有一个关于在冗长模板中使用typedef的问题。症结:我发现自己陷入了困境——除了客户端函数的本地之外,似乎没有放置typedef的好地方。虽然有类似的SO问题(例如,参见here),但似乎没有一个能够准确地解决这个问题。请注意,这个问题并没有说明typedef在下面的内容中是否是可取的——为了说明的目的,我试图简化一些事情。我在使用boost::shared_ptr时出现了问题.基本上,我想做以下事情:#includetypedefboost::shared_ptrWidgetPtr;将此typedef放在Widget中声明标题看起来很难看。这里似乎有两个考虑:(i)如果Widge

c++ - 是否可以转发声明命名空间内的 typedef?

我环顾四周,我不太清楚其他类似问题是否能回答这个问题。//lib.hnamespacelib_namespace{structlib_struct{typedefstd::vectorstruct_value;};typedeflib_struct::struct_valuelib_value;//compilerpointshere};//my.h//attemptatforwarddeclarationnamespacelib_namespace{classlib_value;};...//my.cpp#include"lib.h"我得到一个可以理解的重新定义编译器错误,但是有没有

c++ - typedef函数指针递归

我试图声明一个函数,该函数采用与参数类型相同的函数。voidrec(void(*f)(void(*)(void(*)(...)))){f(f);}我最终进行了递归尝试。您始终可以从void*进行转换。voidrec(void*f){((void(*)())f)(f);}但它不是类型安全的我试图用typedef来做到这一点:typedefvoid(*RecFunc)(RecFunc);但不编译。有可能吗? 最佳答案 你不能做你想做的事。正如您所注意到的,您最终试图创建一个递归的typedef。语言不支持。

c++ - 需要帮助解码这个 typedef

我正在尝试创建对数组的引用。它是这样工作的:typedefintarray_type[100];intmain(){inta[100];array_type&e=a;//Thisworks}但后来我试图删除typedef,并让同样的东西工作。一直没有成功。intmain(){inta[100];//int[100]&e=a;//(1)->error:bracketsarenotallowedhere;todeclareanarray,placethebracketsafterthename//int&e[100]=a;//(2)->error:'e'declaredasarrayofr

c++ - 将 typedef 制作为文件或子类的本地文件

我正在将2个程序合并为一个程序,在2个不同的文件(我有很多文件)中,我有一个同名的typedef,但类型不同。这些类型将在程序的完全不同的部分使用,并且永远不会相互交谈,也不会互换使用。我当然可以在其中一个文件中进行搜索替换,但我想知道是否有其他解决方案。类似于将typedef绑定(bind)到特定文件。或者将typedef设为类及其子类的局部类型。谢谢 最佳答案 typedef总是“本地文件”。因此,“使其成为文件本地”的意思并不完全清楚。Typedef不引入具有自己链接的实体,它只是为现有类型创建一个别名。因此,根本不存在“使其

c++ - 解决 typedef u8 以使用 C++11 u8 字符串文字

我想使用新的C++u8字符串文字前缀(reference)。但是我使用的代码库已经将u8类型定义为unsignedchar。我实际上不能四处移动header或#undef围绕它们。我该如何解决这个问题? 最佳答案 u8已经被定义为一个宏并不重要。字符串文字,无论它是否具有编码前缀,都是单个预处理器标记。u8前缀不会进行宏替换。附录C中实际上有一个示例可以证明这一点:#defineu8"abc"constchar*s=u8"def";//Previously"abcdef",now"def"

c++ - 在类内部或外部声明的 typedef 结构?

我正在创建一个名为ImageLoader的类,它将用于加载各种图像格式。对于各种图像格式,使用了某些结构。例如,对于bmp文件,您有一个BITMAPFILEHEADER结构和另外两个结构。我想知道的是,当我将类定义放在头文件中时,我是将structtypedefs作为类定义的一部分,还是应该将它们分开,放在类定义之外?我不确定,因为如果我只是声明一个结构变量,那显然会在类中发生,但是因为我正在定义一个类型,所以我不确定在内部定义一个类型是否被认为是好的设计一个类(class)。 最佳答案 我的一般规则是,如果它只会与那个类一起使用,

c++ - 为什么在 C++ 枚举定义中需要 typedef

这个问题在这里已经有了答案:WhydoyouusetypedefwhendeclaringanenuminC++?(9个回答)关闭9年前。在头文件中看到了如下内容typedefenumTest__tag{foo,bar}Test;我想知道为什么要使用typedef;我可以用enumTest{foo,bar};是这样吗?

C++ 混淆的 typedef 声明

这个声明是什么意思?(在采访中给出):typedefvoid*(A::*B)(char*); 最佳答案 将B定义为指向类A的成员函数的指针,它接收char*并返回void*. 关于C++混淆的typedef声明,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/21257036/