错误:ISO C++禁止指针和整数的比较
我有以下资料:错误:ISO C++禁止指针和整数的比较,c++,C++,我有以下资料: wxIntPtr* value; CreateRegKey(); if (regkeyexist) { if (regKey->HasValue("LoggingStatus")) { regKey->QueryValue("LoggingStatus", value); if (value == 1) 不过,我得到了错误,因为C++禁止指针和整数< /P> < P>的比较。这应
wxIntPtr* value;
CreateRegKey();
if (regkeyexist) {
if (regKey->HasValue("LoggingStatus")) {
regKey->QueryValue("LoggingStatus", value);
if (value == 1)
不过,我得到了错误,因为C++禁止指针和整数< /P> < P>的比较。这应该编译,但我不知道它是不是你想要的:< /P>
...
if (*value == 1)
...
您正在尝试将int与指针进行比较 如果您确实试图查看指针是否为1 否则,如果您试图与值所指向的值进行比较 虽然我不知道你为什么要做第一件事: 我认为你应该做的是:
wxIntPtr* value;
CreateRegKey();
if (regkeyexist) {
if (regKey->HasValue("LoggingStatus")) {
regKey->QueryValue("LoggingStatus", value);
if (value == 1)
这就是大多数Windows编程的方式,API调用初始化您自己实例化的值和结构。很可能,当您将wxIntPtr*值传递给QueryValue时,它会尝试如下方式设置它的值:
QueryValue("LoggingStatus", &value) { *value = 1; } // For example.
在您的情况下,当它尝试取消对未初始化指针的引用时,这将导致崩溃。@Anonymous srsly?您希望该值会指向地址1?@Anonymous:这将强制编译代码,但不会使其行为合理。OP要求删除错误,所以我告诉:/I正在从注册表获取该值
wxIntPtr value; // wxIntPtr on the stack
...
regKey->QueryValue("LoggingStatus", &value); // Pass by reference to modify.
if (value == 1)
QueryValue("LoggingStatus", &value) { *value = 1; } // For example.