我正面临以下问题。我们假设我的代码看起来像那样
#define Function1 FunctionOne
#define Function2 FunctionTwo
#define CALL_FUNCTION ( FunctionName ) \
SOMEOBJ someObject....
someObject->FunctionName();
现在问题是我想检查函数名称是什么,并且我想要使用不同的SOMEOBJ
。所以对于
CALL_FUNCTION(Function1)
将调用以下代码
SOMEOBJ someObj...
someObj->FunctionOne();
但是
CALL_FUNCTION(Function2)
....
SOMEOBJ2 someObj...
someObj->FunctionOne();
答案 0 :(得分:0)
首先,我想阻止你使用我的答案。就像评论所说,你可能正在为你的问题找错了解决方法。
作为学习目的,我想为您提供一个宏观解决方案:
struct SOMEOBJ1 {
void FunctionOne() { std::cout << "SOMEOBJ1 FunctionOne"; }
};
struct SOMEOBJ2 {
void FunctionTwo() { std::cout << "SOMEOBJ2 FunctionTWO"; }
};
#define Function1 FunctionOne
#define Function2 FunctionTwo
#define CALL_FUNCTION( funcVersion ) \
{ \
SOMEOBJ ## funcVersion someobj; \
someobj.Function ## funcVersion (); \
}
int _tmain(int argc, _TCHAR* argv[])
{
CALL_FUNCTION(1);
CALL_FUNCTION(2);
return 0;
}