错误:ISO C ++禁止指针和整数之间的比较

时间:2012-08-16 12:51:03

标签: c++

我有以下内容:

    wxIntPtr* value;
    CreateRegKey();
    if (regkeyexist) {
        if (regKey->HasValue("LoggingStatus")) {
            regKey->QueryValue("LoggingStatus", value);
            if (value == 1)

然而我得到错误,因为c ++禁止指针和整数

之间的比较

2 个答案:

答案 0 :(得分:4)

这应该编译,但我不知道这是否是你想要的:

...
if (*value == 1)
...

答案 1 :(得分:3)

您正在尝试将intpointer

进行比较

如果您确实想要查看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.

在您的情况下,当尝试取消引用未初始化的指针 时,这会导致崩溃。