【发布时间】:2011-03-05 20:29:05
【问题描述】:
在浏览了网络并弄乱了自己之后,我似乎无法将 void* 的目标(它是一个字符串)转换为 std::string。我尝试按照this page 的建议使用sprintf(buffer, "%p", *((int *)point)); 来获取C 字符串,但无济于事。可悲的是,是的,我必须使用 void*,因为这就是 SDL 在其 USEREVENT 结构中使用的内容。
对于那些感兴趣的人,我用来填充 Userevent 的代码是:
std::string filename = "ResumeButton.png";
SDL_Event button_press;
button_press.type = BUTTON_PRESS;
button_press.user.data1 = &filename;
SDL_PushEvent(&button_press);
有什么想法吗?
编辑:感谢所有回复,我只需要将 void* 转换为 std::string*。傻我。非常感谢你们!
【问题讨论】:
-
什么是STL,STL中的USEREVENT是什么? C++ 没有这样的东西。
-
你想做什么?你有一个指向什么的 void* 指针?
-
我认为他的意思是 SDL UserEvent linux.die.net/man/3/sdl_userevent
-
向我们展示填充 UserEvent 结构的代码。
-
@Lewis :这里有问题。当您的事件处理程序运行时,
filename超出范围,user.data1指向垃圾。您可能会出现段错误(尽管它可能按预期工作......一段时间......直到出现段错误)。看看我的回答,看看如何防止这种情况发生。
标签: c++ string printf void-pointers