2012-10-04 50 views
0

我使用外部庫,並且我有一個類從另一個類繼承與下一個功能修改參數不參考

空隙IOCallback ::公開(常量字符*文件名,布爾ISOPEN)

我需要修改布爾,我不能修改代碼來使用它像引用。

有反正我可以做到這一點嗎?

+2

您可以修改您的方法收到的本地副本,但是沒有任何機制可以讓您修改調用者的副本AFAIK。 – jpm

+0

什麼代碼不能修改?你顯然必須修改調用者對返回的bool做些什麼,你顯然必須修改函數來返回一個bool。它只是你不能修改的函數參數類型嗎? –

回答

4

我需要修改布爾,我不能修改代碼來使用它像引用。

如果你的意思是這樣的...

bool b = false; 
IOCallback callback; 
callback.Open(filepath, b); 
if(b) { // <- will never actually evaluate to anything but false 
    // do something 
} 

...那麼,好吧,你不能。該函數接收其參數的副本。您可以自由修改函數內部的參數,但是您無法以調用方能夠看到所述修改的方式進行操作。

我質疑這個請求背後的推理。如果你編寫了代碼,那麼你可以修改它,或者添加另一個重載版本來做你需要的。如果你沒有編寫代碼並且不能修改它,那麼它從來沒有打算首先改變它的參數,那麼會得到什麼?

+0

感謝大家指出我在正確的方向,該功能是打算用於調試目的,當一個文件打開,而不是真正的I/O – riveri

+0

我的意圖是使用它,例如:如果該文件存在磁盤然後正常閱讀,如果沒有,然後回調嘗試從另一個來源,即文件內的zip文件中讀取它。 – riveri