2013-10-28 76 views
0

该函数检查第一个参数是否为偶数,如果是,则将该值添加到第二个参数。它使用void *,我必须转换为int,但是我遇到了语法问题以及如何正确投射以及使用指针。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”中出现错误,表示“表达式必须具有整数或枚举类型”

+3

至少'B + = A'线是错误的。 – Cthulhu

+2

由于'a'和'b'是指针,并且假设您想要将'a'添加到'b',您需要'* b + = * a'。您至少应该在学习之前学习一种语言的**语法**,然后再提问 - 我们不是“教我语言X”网站。 – 2013-10-28 20:21:34

+2

为什么你使用void *而不是int –

回答

6

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

做,而不是:

*b += *a; 
2

您正在尝试一个指针到另一类则是非法操作在C++中。您需要取消引用指针首先使用它们指向整数(如果那是你的意图摆在首位):

*b += *a;

+0

好的,我将如何解引用指针,以便我使用它? – user2140629

相关问题