实际工作中模板使用还比較多,并且使用类成员函数或者变量作为模板參数的情况是许多的,在这里先小小举个样例。
代码很easy,可是在实际中确实很经常使用,并且有用。
//我仅仅是个測试类而已 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<class _Tp, class _Param, class _Ret> void test_call(_Tp* obj, _Ret (_Tp::*_func)(_Param), _Param _p) { (obj->*_func)(_p); } //成员变量。这个用的不多。主要是在Imp下会用到 template<class _Tp, class _Param> 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<TestClass, int, void>(tt, &TestClass::testFunc, 6); test_call<TestClass, double, double>(tt, &TestClass::testFunc2, 6.9); //这个在非模板情况下比較经常使用 test_func f1 = &TestClass::testFunc; (tt->*f1)(7); //成员变量的使用 test_member(tt, &TestClass::m_testVal, 5); delete tt; return 1; }没有多余的解释啦,代码灰常简单。