如何获取成员函数的字符串表示形式?

尼基塔布莱克

作为哈希的一部分,我需要将函数指针转换为字符串表示形式。使用全局/静态功能很简单:

string s1{ to_string(reinterpret_cast<uintptr_t>(&global)) };

这里

2)任何指针都可以转换为足以容纳该指针值的任何整数类型(例如to std::uintptr_t

但是我对成员函数有疑问:

cout << &MyStruct::member;

输出,1尽管在调试器中我可以看到地址。

string s{ to_string(reinterpret_cast<uintptr_t>(&MyStruct::member)) };

给出编译时错误cannot convert因此,似乎没有任何指针可以转换。

我还能做些什么来获得字符串表示形式?

埃雷里卡
cout << &MyStruct::member;

输出,1尽管在调试器中我可以看到地址。

没有的重载ostream::operator<<(decltype(&MyStruct::member))但是,成员函数指针可以隐式转换bool为它,为此,存在一个重载,并且这是重载解析的最佳匹配。true如果指针不为null,则转换后的值为true输出为1


string s{ to_string(reinterpret_cast<uintptr_t>(&MyStruct::member)) };

给出一个编译时错误,无法转换。因此,似乎没有任何指针可以转换。

可能令人困惑的是,在标准的指针中,并不是对象指针,成员指针,函数指针和成员函数指针的总称。指针专门意味着数据指针。

因此,引用的规则不适用于指向成员函数的指针。它仅适用于(对象)指针。


我还能做些什么来获得字符串表示形式?

您可以使用unsigned char足够大的缓冲区来表示指针,并使用std::memcpy然后以您自己选择的格式打印。我建议使用十六进制。

正如Martin Bonner所指出的,指向成员的指针可能包含填充,在这种情况下,指向同一成员的两个值实际上在缓冲区中可能具有不同的值。因此,打印值用处不大,因为两个值在不知道填充哪些位(如果有)的情况下无法比较-这是实现方式定义的值。


不幸的是,我需要一个可靠的解决方案,因此由于这种填充,我无法使用。

没有便携式健壮的解决方案。

正如Jonathan Wakely指出的那样,Itanium ABI中没有填充,因此,如果您的编译器使用填充,则建议的memcpy方法将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取视图ID的字符串表示形式

来自分类Dev

以字符串形式获取函数的输出

来自分类Dev

从具有函数名称和参数的列表中获取函数的字符串表示形式

来自分类Dev

以字符串形式获取函数然后运行它

来自分类Dev

以字符串形式获取lambda函数的名称

来自分类Dev

Javascript-以字符串形式获取函数名称

来自分类Dev

如何从可为空的类型获取字符串表示形式?

来自分类Dev

我如何从Django的queryset获取字符串表示形式

来自分类Dev

如何获取包含SHIFTSTATE的ShortCut Key的字符串表示形式?

来自分类Dev

如何在Android Oreo中获取字符串的Base64表示形式

来自分类Dev

如何在Shell中获取字符串的二进制表示形式?

来自分类Dev

如何在JSON中获取PrimaryKeyRelatedField的字符串表示形式

来自分类Dev

如何在Python 2.7中获取Oracle数据库查询的字符串表示形式

来自分类Dev

如何从带有参数的类型的字符串表示形式中获取清单

来自分类Dev

动态获取协议的字符串表示形式

来自分类Dev

获取Linq To Objects查询的字符串表示形式

来自分类Dev

FOS Elastica-获取查询的字符串表示形式

来自分类Dev

MyClass :: class-获取MyClass的字符串表示形式

来自分类Dev

获取任何文件的字符串表示形式,C ++

来自分类Dev

获取对象的字符串表示形式的不同方法

来自分类Dev

pygame:获取事件键字符串表示形式

来自分类Dev

获取Scala中闭包的字符串表示形式

来自分类Dev

如何执行以字符串形式命名的JavaScript函数

来自分类Dev

如何执行以字符串形式命名的JavaScript函数

来自分类Dev

如何以字符串形式获取XML内容

来自分类Dev

如何以字符串形式获取图像资源的名称

来自分类Dev

如何以字符串形式获取属性名称?

来自分类Dev

如何从xml文件中以字符串形式获取URL?

来自分类Dev

如何以字符串形式获取 XML 元素的内容?

Related 相关文章

  1. 1

    如何获取视图ID的字符串表示形式

  2. 2

    以字符串形式获取函数的输出

  3. 3

    从具有函数名称和参数的列表中获取函数的字符串表示形式

  4. 4

    以字符串形式获取函数然后运行它

  5. 5

    以字符串形式获取lambda函数的名称

  6. 6

    Javascript-以字符串形式获取函数名称

  7. 7

    如何从可为空的类型获取字符串表示形式?

  8. 8

    我如何从Django的queryset获取字符串表示形式

  9. 9

    如何获取包含SHIFTSTATE的ShortCut Key的字符串表示形式?

  10. 10

    如何在Android Oreo中获取字符串的Base64表示形式

  11. 11

    如何在Shell中获取字符串的二进制表示形式?

  12. 12

    如何在JSON中获取PrimaryKeyRelatedField的字符串表示形式

  13. 13

    如何在Python 2.7中获取Oracle数据库查询的字符串表示形式

  14. 14

    如何从带有参数的类型的字符串表示形式中获取清单

  15. 15

    动态获取协议的字符串表示形式

  16. 16

    获取Linq To Objects查询的字符串表示形式

  17. 17

    FOS Elastica-获取查询的字符串表示形式

  18. 18

    MyClass :: class-获取MyClass的字符串表示形式

  19. 19

    获取任何文件的字符串表示形式,C ++

  20. 20

    获取对象的字符串表示形式的不同方法

  21. 21

    pygame:获取事件键字符串表示形式

  22. 22

    获取Scala中闭包的字符串表示形式

  23. 23

    如何执行以字符串形式命名的JavaScript函数

  24. 24

    如何执行以字符串形式命名的JavaScript函数

  25. 25

    如何以字符串形式获取XML内容

  26. 26

    如何以字符串形式获取图像资源的名称

  27. 27

    如何以字符串形式获取属性名称?

  28. 28

    如何从xml文件中以字符串形式获取URL?

  29. 29

    如何以字符串形式获取 XML 元素的内容?

热门标签

归档