簡體   English   中英

在C ++中將默認值參數放在可變長度函數中的哪里?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM