我有以下几点:
wxIntPtr* value;
CreateRegKey();
if (regkeyexist) {
if (regKey->HasValue("LoggingStatus")) {
regKey->QueryValue("LoggingStatus", value);
if (value == 1)
但是我得到了错误,因为 c++ 禁止指针和整数之间的比较
我有以下几点:
wxIntPtr* value;
CreateRegKey();
if (regkeyexist) {
if (regKey->HasValue("LoggingStatus")) {
regKey->QueryValue("LoggingStatus", value);
if (value == 1)
但是我得到了错误,因为 c++ 禁止指针和整数之间的比较
这应该编译,但我不知道它是否是你想要的:
...
if (*value == 1)
...
您正在尝试将 aint
与 a进行比较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.
在您的情况下,当它尝试取消引用未初始化的指针时,这将导致崩溃。