0

我有以下几点:

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

但是我得到了错误,因为 c++ 禁止指针和整数之间的比较

4

2 回答 2

4

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

...
if (*value == 1)
...
于 2012-08-16T12:53:18.780 回答
3

您正在尝试将 aint与 a进行比较pointer

如果您确实想查看是否pointer1

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.

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

于 2012-08-16T12:57:32.007 回答