c++变长函数中默认值参数的位置
where to place default value parameter in variable-length function in c++?
在变长参数函数中,必须排在最后。默认值启用的参数也必须是最后一个。
那么,在同一个函数中需要这两个呢?
现在我有一个日志实用程序:void MyPrint(int32_t logLevel, const char *format,…),用于根据'logLevel'打印日志。
然而,有时我希望它可以用作:MyPrint("日志测试编号%d",编号),不需要"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);
相关文章:
- boost::p rogram_options 在指定意外的位置参数时不报告任何错误
- 提升::P设置选项无法使所有参数都处于位置状态
- 处于默认参数位置的 Lambda 无法访问好友成员。这是编译器错误吗?
- ClangTool 如何获取变量声明中模板参数的位置?
- 了解 glm::ortho() 的参数如何影响投影后的顶点位置
- 参数中的与号位置
- 为什么后缀失败并且前缀在传递迭代器作为参数并在尾部位置递归时工作正常
- 应删除传递参数时创建对象的位置
- 参数包不在最后位置的部分类模板专用化
- 让我们C++推断定义参数的类/命名空间的位置
- g++ 对象文件参数位置很重要,并给出无法正常编译的不同结果
- gcc 的 std::bind 在源中的哪个位置将参数复制到数据结构中?
- STL中set的insert函数中为什么存在位置参数
- 使用Args.中的n个参数..从位置m开始
- C/C++:函数参数列表中的"const"位置
- 在模板上下文中通过引用传递的参数的"const"限定符的位置
- 在C++函数中的适当位置处理参数
- 按位置查找未标记的模板选项/参数/参数
- Boost:无法识别的位置参数选项
- 为什么我总是在传递位置参数时得到默认值