[英]where to place default value parameter in variable-length function in c++?
在可變長度參數函數中,“ ...”必須放在最后。 並且啟用默認值的參數也必須是最后一個。
那么,在同一個函數中需要兩者又如何呢?
現在,我有一個日志實用程序:void MyPrint(int32_t logLevel,const char * format,...),用於根據'logLevel'打印日志。
但是,有時我希望它可以用作:MyPrint(“ Log test number%d”,number),而不需要'logLevel'。
問題: 默認參數和可變參數函數無濟於事。
在您的特定情況下,您可能只想制作兩個版本的MyPrint,例如:
MyPrint(const char *format, ...)
{
_logLevel = 1;
// stuff
}
MyPrint(int32_t logLevel, const char *format, ...)
{
_logLevel = logLevel;
//stuff
}
另一方面, 命名參數慣用法確實可以提供替代解決方案:
class Abc
{
public:
MyPrint(const char *format, ...)
{
_logLevel = 1;
// stuff
}
Abc &setLogLevel(int32_t logLevel)
{
_logLevel = logLevel;
}
// stuff
};
因此,您可以像這樣調用MyPrint():
MyPrint("blah,blah", 123);
或像這樣:
MyPrint("blah,blah", 123).setLogLevel(5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.