关于类成员函数在模板中的使用

实际工作中模板使用还比较多,而且使用类成员函数或者变量作为模板参数的情况是很多的,在这里先小小举个例子。代码非常简单,但是在实际中确实非常常用,而且实用。

//我只是个测试类而已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;}没有多余的解释啦,,代码灰常简单。

自己变得跟水晶一般透明,

关于类成员函数在模板中的使用

相关文章:

你感兴趣的文章:

标签云: