看板 C_and_CPP 關於我們 聯絡資訊
#include <iostream> using namespace std; //template function 無法偏特化用template class template<class R , class Node> struct Action{ }; template< class Node > struct Action< int , Node > { Action(Node& node) { cout << "int" << endl; node.count++; } }; // abstract node struct abs_node { virtual void f () = 0 ; // semantic action } ; // 根據每個 parsing rule 繼承的 node template < class R > // struct node : abs_node { // 為了要處理node, int count; void f () { Action<R , node > act(*this); } // 要把node自己傳進去! } ; int main() { node<int> int_node; int_node.count = 0; int_node.f(); cout << int_node.count << endl; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.194.173
yoco315:成功了 XD 沒想到可以還有把自己傳進去這招. XDD 04/15 03:25
yoco315:我本來是這樣 template < class DUMMY > g ( DUMMY n ) {} 04/15 03:26
yoco315:也會 work,但是寫起來爆醜 orz 04/15 03:26
yoco315:感恩 QQ 感動 ing 04/15 03:28