где разместить параметр значения по умолчанию в функции переменной длины в C ++?

в функции параметров переменной длины знак «…» должен быть последним. И заданные по умолчанию параметры должны быть последними.

Итак, как насчет обоих, необходимых в одной и той же функции?

Теперь у меня есть утилита журнала:
void MyPrint (int32_t logLevel, const char * format, …), который используется для печати журнала в соответствии с ‘logLevel’.

Однако иногда я надеюсь, что он может быть использован как:
MyPrint («Журнал теста номер% d», номер), без необходимости «logLevel».

Вопрос:
Стандартные аргументы и переменные функции
не помогло

2

Решение

В вашем конкретном случае вы можете просто сделать две версии 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]