我使用C++中的模板,我傳遞一個流對象作爲模板的參數。如何在運行時瞭解當前的流類型?如何確定C++中的當前流類型?
回答
您可以:
- 嘗試的dynamic_cast <>到你感興趣的可能的流類型,看看哪些成功
- 使用typeid的,並比較已知類型
- 的要求模板的用戶傳遞一個額外的參數說流類型是什麼
- 爲需要不同的處理流特定類型提供模板特
但是,所有這些都是限制 - 它們都需要你瞭解不同的流類型,如果你需要在你的模板類中進行特殊處理,你可能會發現另一個需要添加另一個。理想情況下,模板應該比這更普遍。
由於標準庫中的流類都來自共同的祖先,所以另一種選擇是不使用模板,而是在提供所需功能和依賴多態性的級別接受指向或指向祖先類型的指針或引用。同樣,如果需要,這可以爲使用重載的特定類型提供專門的功能。
一些編譯器也有可能被使用的'typeid'關鍵字。 –
其他方式:'typeid'是標準的,'typeof'是一個擴展。我無法分辨約阿希姆是否發現了這件事,並且正在滔滔不絕... –
Woops,你是對的。太多的C#。糾正了這一點。 –
模板是編譯時施工,所以沒有什麼做的「在運行時」。但這更好。可能最慣用的方式是使用char_traits
:
template <typename TChar, typename Traits>
void foo(std::basic_ostream<TChar, Traits> & o)
{
// use `Traits` in here
// e.g. Traits::char_type
}
- 1. 如何確定當前類的類型?
- 2. 如何使用cmake確定當前構建類型的visual studio
- 3. 如何確定適當的MIME類型
- 4. 如何確定Android中的當前IME?
- 5. 確定宏中的當前構建類型/方案
- 6. 如何確定C#中當前重點進程的名稱
- 7. 如何確定C++/CLI中的當前編譯目標?
- 8. 如何確定任意C++數值類型的實部類型?
- 9. 給定一個Java InputStream,如何確定流中的當前偏移量?
- 10. 如何確定哪個成員類型的前綴包含在C#中cref
- 11. 在opencv中確定StatModel的類型C++
- 12. 確定C#中的列表類型
- 13. 如何確定C#中集合中對象的類型
- 14. 如何獲得當前的HDD類型?
- 15. 如何確定UserControl的當前Page.Title值
- 16. 如何確定Powershell中的XML類型?
- 17. 確定默認打印機的當前紙張類型
- 18. 如何確定當前的iPhone /設備型號?
- 19. 如何確定組類型?
- 20. 如何確定類型?
- 21. UWP/C# - 如何判斷當前顯示什麼類型的ViewModel
- 22. c#:如何確定當前是否顯示Scrollable控件的ScrollBar?
- 23. 如何確定變量是否是C#中的類型引用?
- 24. 如何確定當前剪貼板中的DataFlavor之前得到
- 25. 確定性在C++中,對象類型
- 26. 如何批量確定當前用戶?
- 27. iOS5如何確定當前視圖
- 28. 確定當前JSP
- 29. (Python類型提示)如何指定當前定義的類型作爲方法的返回類型?
- 30. 如何確定當前正在使用哪個僞類?
顯示代碼並準確解釋您要實現的目標。 –