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

と を比較しようとしてい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.

あなたの状況では、初期化されていないポインターを逆参照しようとすると、クラッシュが発生します。

于 2012-08-16T12:57:32.007 に答える