看板 C_and_CPP 關於我們 聯絡資訊
如果class是template class,可以用偏特化來做,編譯時期就卡住使用者。 但是從原文看來似乎只有個別member function有template(?) 可以用typeid來做執行時期的判斷。 下面我放了一個空的FileSystem::Info, 當判斷出true或false之後,就隨便你怎麼設計了。 #include <iostream> #include <string> #include <deque> #include <typeinfo> //for typeid namespace FileSystem {class Info {};} //just for demo class Foo { public: template<typename T> void getFiles(T& t) { std::cout << std::boolalpha << (typeid(typename T::value_type)==typeid(FileSystem::Info)) << '\n'; } }; int main() { Foo f; std::deque<FileSystem::Info> v1; std::deque<std::string> v2; f.getFiles(v1); f.getFiles(v2); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.202.9 ※ 編輯: dirkc 來自: 111.249.202.9 (03/05 22:31)
dirkc:PO完才看到azureblaze的分享,編譯時期就卡住較好,推薦 03/05 23:01