我希望简化一段代码,其中大约有100个类似这样的表达式:
if( flag )
AddData( key, some_number );
else
AddData( key, error_description );
其中AddData被重载为
bool AddData( int key, double value );
bool AddData( int key, const char * error );
我希望将上面的代码表达为以下形式:
AddData( key, flag? some_number : error_description );
当然,这段代码无法编译,因为标志的值是在运行时确定的,而AddData签名需要在编译时确定。
将这两个函数合并成类似以下的东西:
bool AddData( int key, bool flag, double value, const char * error );
解决哪些参数使用哪些参数不使用的问题并能够正常运行,虽然可行,但看起来并不美观。
因此问题来了:有没有更合理的方法在运行时解决函数重载的问题?
AddData(key, flag ? some_number : error_description);
看起来类似于AddData(key, flag, some_number, error_description);
... - Jarod42someNumber
/errorDescription
中的一个是否很重要?此外,标志在每次调用时是否为不同的表达式? - Deduplicatorbool AddData(int key, bool flag, ...)
- indiv