0

この関数は、最初のパラメーターが偶数かどうかをチェックし、偶数の場合はその値を 2 番目のパラメーターに追加します。void * を使用しており、int に変換する必要がありますが、構文と適切にキャストしてポインターを使用する方法に問題があります。

bool isEven(void *x, void* z) {

int * a = (int *)x;
int * b = (int *)z;

bool result = false;

if (*a % 2) {

    result = true;
    b += a;
}

return result;
}

構文の何が問題になっていますか? 「a」の下に「式には整数型または列挙型が必要です」というエラーが表示されます

4

2 に答える 2

6

あなたの追加は整数を変更しませんが、ポインタを変更します。ただし、ポインターを追加することはできません。

代わりに:

*b += *a;
于 2013-10-28T20:21:18.870 に答える
2

あるポインターを別のポインターに追加しようとしていますが、これは C++ では不正な操作です。ポインターが指している整数を使用するには、最初にポインターを逆参照する必要があります (そもそもそれが意図されている場合)。

*b += *a;

于 2013-10-28T20:23:27.253 に答える