作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我有这样一个函数:void f(int p1=1, int p2=2, int p3=3, int p4=4);
我只想使用一些参数来调用它——其余的将是默认值。
像这样的东西会起作用:
template<bool P1=true, bool P2=true, bool P3=true, bool P4=true>
void f(int p1=1, int p2=2, int p3=3, int p4=4);
// specialize:
template<>
void f<false, true, false, false>(int p1) {
f(1, p1);
}
template<>
void f<false, true, true, false>(int p1, int p2) {
f(1, p1, p2);
}
// ... and so on.
// Would need a specialization for each combination of arguments
// which is very tedious and error-prone
// Use:
f<false, true, false, false>(5); // passes 5 as p2 argument
但是它需要太多的代码才能实用。
有更好的方法吗?
最佳答案
使用命名参数习语(→ FAQ link)。
Boost.Parameters 库(→ link )也可以解决此任务,但代价是代码冗长且清晰度大大降低。它在处理构造函数方面也存在不足。当然,它需要安装 Boost 库。
关于c++ - 我怎样才能清楚地指定我要传递哪些参数以及哪些参数保持默认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8178392/
MVC3 中的助手是否在 Controller 和 View 中使用? 助手是放置常用 Controller 方法的正确位置吗? 我想创建一个通用方法来获取数据库中的所有子子 ID,并确保它位于正确的
有人可以阐明这两者之间的区别吗,因为它们存在于执行上下文中?我很难阅读 ECMA 262 v 5规范并清楚地看到差异。 谢谢你, 最佳答案 两者都是执行上下文的组件(相同类型),但它们有不同的用途(f
我是一名优秀的程序员,十分优秀!