比如下面的代码,最好能有对于任意类型的方法:
const char *a = "fasdfasdfsadf"; long addr = (long)(std::addressof(a)); cout << "address of a:" << addr << endl; const char *b = (const char *)addr; cout << b << endl; //这句不能正确输出字符串内容,报错了
我需要可以进行序列化的地址,也就是可以转成16进制的地址
addr = std::adressof(a)
你拿 到的addr。 是指针a的 地址。并不字符串的地址。所以你不能正确打印.
传给addressof的应该是对象本身,而不能是对象的指针。它接受一个参数,该参数为要获得地址的那个对象的引用.
如果 想要对任意类型都可用的方法,你需要 对addressof进行特化。
目前 addressof 特化了。object跟非object.
如果 要对指针也适用。需要 特化它。
能给个例子吗?
@空明流光: 你这个例子其实我觉的你没有理解指针的意思
最后打印的b。 就是打印a的地址。 这并不能打印出字符串。
如果 你想打印字符串。应该要用字符串的地址。
风风雨雨,至今依然鼎力在这个行业的顶峰,就是因为有这么多的客户一直的信任和支持。致力打造真正公平、公正的经营理念,为更多客户玩的开心管网TL3210点com、玩得放心。
用其它方案解决