作为哈希的一部分,我需要将函数指针转换为字符串表示形式。随着全球/静态函数是微不足道:如何获取成员函数的字符串表示形式?
string s1{ to_string(reinterpret_cast<uintptr_t>(&global)) };
而且从here:
2)任何指针可以转换为任何整数类型足够大,以 将指针(如以
std::uintptr_t
值)
但我有一个问题,成员函数:
cout << &MyStruct::member;
输出1
虽然在调试器中我可以看到地址。
string s{ to_string(reinterpret_cast<uintptr_t>(&MyStruct::member)) };
给出一个编译时错误cannot convert
。所以似乎没有任何指针可以转换。
我还能做些什么来获得字符串表示?
'1'很可能是正确的值。毕竟,成员函数指针是相对的。这也意味着如果你不添加额外的信息,比如类型自身的typeid的散列,你可能会遇到很多冲突。当你说*没有任何指针可以被转换*时,请记住成员函数指针*不是*指针;他们正是*成员函数指针*。 –
“所以看起来没有任何指针可以被转换......”指针与指向成员的指针不同,指针可以转换为整型,指向成员的指针不能。 – user657267
指针到成员没有'operator <<'。 '&MyStruct :: member'是一个非空的指向成员的指针。任何指针都可以隐式转换为“bool”。非空指针转换为'true',默认打印为'1'。 – molbdnilo