class test{public:void fun(){}}
class layerManager
{
public:
static layerManager* getlayerManagerHandler()
{
static layerManager& rh = null;
if(!rh)
{
rh = new layerManager;
}
return rh;
}
template<typename T>
T* getLayer(const std::string layername)
{
test* p = new test;
return dynamic_cast<T>(p);
}
void fun(){}
private:
layerManager(){}
~layerManager(){}
};
#define RES(name type)
layerManager::getlayerManagerHandler()->fun();\
layerManager::getlayerManagerHandler()->getLayer<type>(name );
int main()
{
std::string ss = "一";
test* p = RES(ss,test)
p->fun();
retrun 0;
}
uj5u.com熱心網友回復:
逗號運算式,逗號運算式的值是最右邊陳述句的值,所以,你可以這樣:#define RES(name, type) \
(\
layerManager::getlayerManagerHandler()->fun(), \
layerManager::getlayerManagerHandler()->getLayer<type>(name)\
)
uj5u.com熱心網友回復:
更常規的做法是分層加函式哈,如下:template<class T>
T* fun_(const std::string &sLayerName)
{
layerManager::getlayerManagerHandler()->fun();
return layerManager::getlayerManagerHandler()->getLayer<T>(sLayerName);
}
#define RES(name, type) fun_<type>(name)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/193109.html
標籤:C++ 語言
