C++ 使用变量参数"..."进行布尔测试
C++ Bool tests using Variable Arguments "..."
当使用变量参数列表"..."
传递它们时,是否可以对多个对象进行Boolean
测试?
示例函数:
bool check_collision( SPRITE sprite, PLATFORM platform ...){
//do check
return true;
}
调用:
if(check_collision(sprite,platform,platform2,platform3,platform4,platform5)){
//manipulate sprite
}
而不是like:
if((check_collision(sprite,platform)
&& (check_collision(sprite,platform2)
&& (check_collision(sprite,platform3)
&& (check_collision(sprite,platform4)
&& (check_collision(sprite,platform5)){
//manipulate sprite
}
或:
if((check_collision(sprite,platform)
|| (check_collision(sprite,platform2)
|| (check_collision(sprite,platform3)
|| (check_collision(sprite,platform4)
|| (check_collision(sprite,platform5)){
//manipulate sprite
}
如果使用"..."
测试它们,你是否需要迭代每个平台/比较每个平台的精灵?它们是否都必须返回true
才能使布尔测试为真或只有一个?我猜你必须发送第三个Argument
,所以函数知道bool是否会是OR
或AND
?(所以如果是或,只有一个必须为真,如果是与,所有必须为真?)
我已经在我目前正在做的程序中测试了它,但我还没有实现任何迭代,所以我很确定它只检查第一个platform
。
#include <stdarg.h>
double checkAll(int count, SPRITE sprite, ...)
{
va_list ap;
int j;
boolean result = false;
va_start(ap, sprite); //Requires the last fixed parameter (to get the address)
for(j=0; j<count; ++j){
result = result || checkCollision(sprite, va_arg(ap, PLATFORM));
}
va_end(ap);
return result;
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 一个关于在C++中重载布尔运算符的问题
- 提升精神:解析布尔表达式并简化为规范范式
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 线程之间的布尔停止信号
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 使用constexpr布尔测试的enable_if不起作用
- 我在使用相等性测试布尔运算符时遇到问题
- 在单个if语句中测试多个布尔值
- C++ 包含针对多种类型数据的布尔测试的模板会获得匹配错误
- 显式布尔操作员 - 无法返回,测试,初始化bool
- 无法将向量<int>转换为 int* 用于布尔测试密码
- C++ 使用变量参数"..."进行布尔测试