【发布时间】:2015-04-24 00:55:00
【问题描述】:
我正在尝试将指针的地址转换为 wxWidgets 库的 wxString。
我有这本书,它提供了一个基于控制台的示例来解释 C++ 中的输入/输出流系统。在这里,我们可以使用
打印一些指针的地址,而不用太复杂const char *const variable = "again";
cout << static_cast<void*>(variable);
到目前为止,我可以理解该示例,但是(现在是复杂的)我想从示例中制作一些 GUI 来训练自己并与本书一起探索 wxWidgets 类。我已经成功地使用 wxAny 类的 As() 方法进行了一些转换,甚至在没有警告或错误的情况下编译它。但在执行时,尝试转换类型时出现“断言失败”。
如果我让程序继续运行,它会在我的 wxTextCtrl 中打印如下内容:
ﻌњ̎X(
有什么想法吗?? (顺便说一句,我在 Windows 7 系统中将 CodeBlocks 与 Mingw32 和 wxWidgets 3.0 一起使用) 这是给我断言失败的代码:
void ConsoleFrame::OnbtnFrase2Click(wxCommandEvent& event)
{
string chaine2("Value of the pointer: ");
void* puntero = &chaine2;
wxAny anyThing= puntero;
consoleText->AppendText(anyThing.As<wxString>());
}
这是给我断言失败错误的方法。 感谢@Grady 之前更正了代码。 似乎我无法将 void* 转换为 wxString。我对可能出现的问题有一个要点,但是我找不到解决在文本控件(不是控制台屏幕)中打印指针地址的原始问题的解决方案
【问题讨论】:
-
你能放一个代码 sn-p 给你“断言失败”。这样观众会更容易理解问题到底是什么。
-
您要打印变量的地址还是C-Style字符串的内容?
-
不清楚你在问什么。您是否希望 wxTextCtrl 包含存储
variable的内存位置地址的人类可读表示?