實際工作中模板使用還比較多,而且使用類成員函數或者變量作為模板參數的情況是很多的,在這裡先小小舉個例子。代碼非常簡單,但是在實際中確實非常常用,而且實用。
//我只是個測試類而已 class TestClass { public: void testFunc(int val){} double testFunc2(double val){return 0;} public: int m_testVal; }; //也會用到的寫法,在不是模板的情況下還挺實用的 typedef void (TestClass::*test_func)(int); //不說boost,不談lambda,僅僅只提模板而已 //成員函數的情況 template沒有多余的解釋啦,代碼灰常簡單。void test_call(_Tp* obj, _Ret (_Tp::*_func)(_Param), _Param _p) { (obj->*_func)(_p); } //成員變量,這個用的不多,主要是在Imp下會用到 template void test_member(_Tp* obj, _Param _Tp::*value, _Param _p) { obj->*value = _p; } int main(int argc, char *argv[]) { TestClass *tt = new TestClass; test_call (tt, &TestClass::testFunc, 6); test_call (tt, &TestClass::testFunc2, 6.9); //這個在非模板情況下比較常用 test_func f1 = &TestClass::testFunc; (tt->*f1)(7); //成員變量的使用 test_member(tt, &TestClass::m_testVal, 5); delete tt; return 1; }