C++???????????????
???????????? ???????[ 2013/6/21 13:37:35 ] ????????
????????C++д??????????????????????????????????????????????????磺
if (map.exists(var1.getName()) {
process(map.get(var1.getName()));
}
???????????к???????var?????????????????????С??????????????????????????д???????????????????????????????????4??????????????
????1????????г??????
???????????private??????????????????????????????????????Ч????????г??????????????inline???????
// @(#) MyClass.h
class MyClass ...{
// ......
private:
void handle(Type& var) ...{
if (map.exists(var.getName()) ...{
process(map.get(var.getName());
}
}
};
// @(#) MyClass.cpp
void MyClass::Handling(void) ...{
// ......
handle(var1);
handle(var2);
// ...
handle(varn);
}
?????????????????????????????????????????inline??????????????????????У??????????????????????inline????????Ч??????????????????????????????????????????????????????????????????????????????????????
????2?????嵱???????????????
???????????1??????е??????????——?????????????????????MyClass.cpp?У????????????????塣???????????????????????????????????????????????????cpp????е????????????????????????????static????????
// @(#) MyClass.cpp
inline static void handle(Type& var) ...{
if (map.exists(var.getName()) ...{
process(map.get(var.getName());
}
}
void MyClass::Handling(void) ...{
// ......
::handle(var1);
::handle(var2);
// ...
::handle(varn);
}
???????????????????????????????????????Ч????????????handle?????????????????MyClass::Handling?е?????????????????MyClass::Handling???????в??????MyClass::Handling???????????????????????????handle?????????Щ?????л???????????????????κ????????????
????????????????????????——
????3????????ж????????ú????????
????????????????#define?????????????????????????????????????б????????????????????#undefine?????ú????塣???????????????????????????????Щ???????????
// @(#) MyClass.cpp
void MyClass::Handling(void) ...{
// .....
#define __HANDLE(VAR)
if (map.Exists(VAR.getName())
Process(map.get(VAR.getName());
__HANDLE(var1);
__HANDLE(var2);
// ...
__HANDLE(varn);
#undef __HANDLE
}
???????????????????е????????????????????????????——????????ж???__HANDLE??#undefine??????????????????????????????????????????????????????庯??????????C++??????????????庯??????????????и?????????——?????
????4??????????
????????????????????????????????????????????????????о???????????????????????????е???????????????????????????????????t???????????£?
// @(#) MyClass.cpp
void MyClass::Handling(void) ...{
// ......
class T ...{
public:
T(MapType& map) : m_Map(map) ...{}
void handle(Type& var) ...{
if (m_Map.exists(var.getName()) ...{
process(m_Map.get(var.getName());
}
}
private:
MapType& m_Map;
} t(map);
t.handle(var1);
t.handle(var2);
// ...
t.handle(varn);
}
???????C++??????????????????á????????????????????Ц??????????????????“???????”??????д??????????????????????????????????Ч????Ρ???????????????????????????????е?ò??????
????С??
??????????????????????н??м???????????????С????????Щ???????????????????????????????????????????????????λ???????????
??????

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11