我有以下内容:
wxIntPtr* value;
CreateRegKey();
if (regkeyexist) {
if (regKey->HasValue("LoggingStatus")) {
regKey->QueryValue("LoggingStatus", value);
if (value == 1)
然而我得到错误,因为c ++禁止指针和整数
之间的比较答案 0 :(得分:4)
这应该编译,但我不知道这是否是你想要的:
...
if (*value == 1)
...
答案 1 :(得分:3)
您正在尝试将int
与pointer
如果您确实想要查看pointer
是否为1
if (value == (wxIntPtr*)(1))
否则,如果您要与value
if (*value == 1)
虽然我不知道为什么你想要做第一个:)
我认为您应该做的事情如下:
wxIntPtr value; // wxIntPtr on the stack
...
regKey->QueryValue("LoggingStatus", &value); // Pass by reference to modify.
if (value == 1)
这就是大多数Windows编程的完成方式,API调用初始化你自己实例化的值。有可能当您将wxIntPtr* value
传递给QueryValue()
时,它会尝试并设置它的值,如下所示:
QueryValue("LoggingStatus", &value) { *value = 1; } // For example.
在您的情况下,当尝试取消引用未初始化的指针 时,这会导致崩溃。