2014-03-13 72 views
0

我已經定義了一個bools數組(也有帶int數組的版本 - 不知道當我想存儲一個和零時什麼更好)在一個函數中。如何將它傳遞給另一個返回其他數組的函數?我參照很努力,但我得到的錯誤..傳遞一個bools/ints數組來改變它的功能

bool functionWithAltering (bool &(Byte[]), int...){ 
    ... 
} 

bool functionWhereSetting (.....) { 
    bool Byte[8]; 
    .... 
    if (!functionWithAltering(Byte, ...)) 
     return 0; 

    bool Byte[16]; 
    .... 
    if (!functionWithAltering(Byte, ...)) 
     return 0; 
    ... 
} 

我得到的錯誤是:

error: declaration of ‘byte’ as array of references 
error: expected ‘)’ before ‘,’ token 
error: expected unqualified-id before ‘int’ 

非常感謝您的任何建議!

回答

1

只是聲明functionWithAltering這樣的:

bool functionWithAltering (bool Byte[], int...) { 
    ... 
} 

陣列函數參數總是衰變成一個指針的第一個元素 - 他們永遠不會被複制過去了,所以你不必擔心可能是低效的副本。這也意味着調用者總是可以看到裏functionWithAltering()的任何修改。

至於你對布爾值數組的使用:如果你想存儲的只是0或1,這是一個非常有效和明智的選擇。

+0

啊,他們衰退?我不知道! (是的,我是C++新手)非常感謝! –

+0

@RadimDolezal不客氣。在這裏,當答案是你正在尋找的時候,你可以通過點擊旁邊的檢查來接受它。 –

0

到一個數組引用的正確申報將看看下面的方式

bool functionWithAltering(bool (&Byte)[8], int...){ 
    ... 
} 

而且代替聲明參數作爲refernce數組,你可以使用兩個參數:指針數組的大小

bool functionWithAltering(bool Byte[], size_t size, int...){ 
    ... 
} 
相關問題