2013-10-28 71 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

相關問題