此函数检查第一个参数是否为偶数,如果是,则将该值添加到第二个参数。它使用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'下面写了一个错误,说“表达式必须有整数或枚举类型”
答案 0 :(得分:6)
您的添加不会修改整数,而是指针。但是无法添加指针。
改为:
*b += *a;
答案 1 :(得分:2)
您正在尝试向另一个添加一个指针,这是C ++中的非法操作。你需要首先取消引用指针以使用它们指向的整数(如果这是你的意图):
*b += *a;