无效*转换为int语法

时间:2013-10-28 20:19:22

标签: c++ void-pointers

此函数检查第一个参数是否为偶数,如果是,则将该值添加到第二个参数。它使用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'下面写了一个错误,说“表达式必须有整数或枚举类型”

2 个答案:

答案 0 :(得分:6)

您的添加不会修改整数,而是指针。但是无法添加指针。

改为:

*b += *a;

答案 1 :(得分:2)

您正在尝试向另一个添加一个指针,这是C ++中的非法操作。你需要首先取消引用指针以使用它们指向的整数(如果这是你的意图):

*b += *a;