當我嘗試使用vector <fstream>
時,它輸出一個編譯錯誤。爲什麼C++禁止fstream的向量?爲什麼我不能使用fstream向量?
回答
因爲fstream的是不可拷貝
從技術上講,'fstream'在C++ 11中只是「可移動的」,因爲這個概念在C++ 03中不存在。在C++ 11中,可以將可移動類型放入C++ 11的'std :: vector'中。所以他的代碼將在C++ 11編譯器中編譯。 –
@NicolBolas,老實說,我不得不說[這篇文章](http://liveworkspace.org/code/3Ftdq5%246)是我見過的最大的錯誤代碼比率。不應該這樣工作,還是我對一些移動語義的事情感到無聊? – chris
@chris:錯誤是由於GCC試圖在它的emplace_back實現中使用move_if_noexcept(或者基於它的東西)(在矢量必須增長的情況下,即使在它未被使用的情況下也必須編譯運行)。但是,fstream的移動構造函數沒有被標記爲「noexcept」,要求它退回到複製版本。 –
- 1. 爲什麼我的fstream訪問不能編譯?
- 2. 爲什麼我不能用迭代器訪問const向量?
- 3. 爲什麼std :: fstream使用char *?
- 4. 爲什麼我的向量不能識別我的派生類?
- 5. 爲什麼我不能正向工程?
- 6. 爲什麼我不能投向B *?
- 7. 爲什麼我不能在Quartz.NET中爲'typeof'使用變量?
- 8. 爲什麼我不能使用header()重定向到頁面?
- 9. 結構C++向量,爲什麼我不能使用vector.at(i)或vector [i]結構?
- 10. 爲什麼我不能更改變量?
- 11. 爲什麼我不能用operator >>讀取fstream的二進制數據?
- 12. 爲什麼我不能使用libxml2.dylib?
- 13. 爲什麼我不能使用@PathVariable?
- 14. 爲什麼我不能使用動態?
- 15. 爲什麼我不能使用.Any()?
- 16. 爲什麼我不能使用AsyncMethodCaller?
- 17. 爲什麼我不能使用它?
- 18. 爲什麼我不能使用JDOM
- 19. 爲什麼我不能使用「TermDocumentMatrix」?
- 20. 爲什麼我使用loadURL不能
- 21. 爲什麼我不能使用mysql_num_rows?
- 22. 爲什麼我不能使用$ session_start()?
- 23. 爲什麼我不能使用create_or_update?
- 24. 爲什麼我不能使用Template Toolkit?
- 25. 爲什麼我不能使用scipy.io?
- 26. 爲什麼fstream命令不工作?
- 27. 爲什麼我不能在LoginView中使用迭代變量?
- 28. 爲什麼我不能在TRecord中使用變量?
- 29. 爲什麼我不能在JavaScript中使用某些變量名?
- 30. 爲什麼我不能像類名一樣使用變量名?
在非C++編譯器11的一個可能(不一定明智)解決方法是使用一個'的std ::矢量<性病:: fstream的*>'... – us2012