c++類中的static新發現

今天在寫一個通用框架,要實現一個註冊類定義的時候,實現自動全局註冊。 一般人們都得通過定義一個實例來完成,這裏用了一小技巧,用static 由於static定義的變量是放在全局的內存區,在程序啓動的時候就會先回對這塊程序初始化,那麼就寫一個函數,這個函數裏面寫上註冊函數,然後讓該函數實現自己的功能,但是用這個函數初始化這個static變量。---------------其實就是一個字 static 會在程序啓動前初始化,所以我們可以通過這個初始化來實現自己的初始化函數
map<INT32,TestInfo*> g_mapTestCase;
bool MakeRegisterFunc(TestInfo* class_name)
{   
	int currentTypeID = 0;
	TestInfo* t = (TestInfo* )class_name;
	map< INT32,TestInfo*>::iterator ibeg = g_mapTestCase.begin();
	
		//strcat(test_name,test_case_name);
		//TestInfo *t = new TestInfo();
	g_mapTestCase.insert(make_pair(currentTypeID,t));
   return true;
}


#define GTEST_TEST(test_case_name,test_name)\
class GTEST_TEST_CLASS_NAME(test_case_name,test_name) : public TestInfo\
{\
public:\
	GTEST_TEST_CLASS_NAME(test_case_name,test_name)(){};\
public:\
	virtual void TestBody();\
	/*a beautify butterfly*/static bool funny;\
};\
GTEST_TEST_CLASS_NAME(test_case_name,test_name)* tinfo =\
new GTEST_TEST_CLASS_NAME(test_case_name,test_name);\
bool GTEST_TEST_CLASS_NAME(test_case_name, test_name)::funny\
= MakeRegisterFunc(tinfo);\


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章