程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 關於類成員函數在模板中的使用

關於類成員函數在模板中的使用

編輯:關於C++

實際工作中模板使用還比較多,而且使用類成員函數或者變量作為模板參數的情況是很多的,在這裡先小小舉個例子。代碼非常簡單,但是在實際中確實非常常用,而且實用。

 

//我只是個測試類而已
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;
}
沒有多余的解釋啦,代碼灰常簡單。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved