gpt4 book ai didi

c++ - 从字符串转换为 void* 并返回

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:07 27 4
gpt4 key购买 nike

是否可以从 void* 重新映射 STL 类对象?

#include <string>

void func(void *d)
{
std::string &s = reinterpret_cast<std::string&>(d);
}

int main()
{
std::string s = "Hi";
func(reinterpret_cast<void*>(&s));
}

最佳答案

使用 static_cast 将 void 指针转换回其他指针,只要确保转换回与最初使用的类型完全相同即可。无需转换即可转换为 void 指针。

这适用于任何指针类型,包括指向标准库中类型的指针。 (从技术上讲,任何指向对象类型的指针,但这就是“指针”的含义;其他类型的指针,例如指向数据成员的指针,需要限定。)

void func(void *d) {
std::string &s = *static_cast<std::string*>(d);
// It is more common to make s a pointer too, but I kept the reference
// that you have.
}

int main() {
std::string s = "Hi";
func(&s);
return 0;
}

关于c++ - 从字符串转换为 void* 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com