2009-06-26 31 views
-2
void FileManager::CloseFile(File * const file) 
{ 
    for (int i = 0; i < MAX_OPEN_FILES; ++i) 
    { 
     if ((_openFiles[i] == file) == true) 
     { 
      _openFiles[i] == NULL; 
     } 
    } 
... 

_openFiles是文件管理的私有成員,只是文件*的
當在立即窗口中執行完全相同的測試中,我得到的結果1的陣列!?!這個簡單的指針相等測試如何失敗?

編輯該==真正被添加純粹作爲理智檢查!

+0

如果我可以提供一個建議:我認爲你應該在這裏使用更高級的數據結構。每次調用這個函數時,某種類型的散列會阻止搜索的需要,我只能想象在類似這樣的「管理器」類中還有其他這樣的函數。經理類在許多情況下也是代碼味道的東西... – rmeador 2009-06-26 16:42:42

+0

該類處於起步階段,散列在列表中!但謝謝你的建議,因爲它證實了我的oppinions .. – 2009-07-02 09:59:45

回答

4

你有

_openFiles[i] == NULL; 

應該說是

_openFiles[i] = NULL; 

+0

哈!恥辱 ! – 2009-06-26 16:17:48

2

沒有足夠的業力來添加評論,但如果cma的答案是正確的(即一個條件應該是一個任務),那麼我希望原始帖子沒有被修復,或者至少有一個注意它已被修復。我盯着它很長一段時間,試圖找出錯誤,然後放棄並閱讀答案。

任何人都可以隨時刪除這個「答案」。