0

Boolean使用变量参数列表传递多个对象时是否可以对它们进行测试"..."

示例函数:

    bool check_collision( SPRITE sprite, PLATFORM platform ...){
         //do check
         return true;
    }

像这样调用:

    if(check_collision(sprite,platform,platform2,platform3,platform4,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
    }

或者:

    if((check_collision(sprite,platform)
        || (check_collision(sprite,platform2)
        || (check_collision(sprite,platform3)
        || (check_collision(sprite,platform4)
        || (check_collision(sprite,platform5)){
        //manipulate sprite
    }

如果使用 测试它们"...",您是否必须遍历每个平台/将精灵与每个平台进行比较?他们都必须返回true以使布尔测试为真还是只有一个?我猜你必须发送一个 3rdArgument所以函数知道 bool 是否是一个ORor and AND?(所以如果 OR,只有一个必须为真,如果 AND,所有都必须为真?)

我已经在我目前正在处理的程序中对其进行了测试,但是我没有实现任何迭代,所以我很确定它只检查第一个platform.

4

1 回答 1

2
#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;
}
于 2013-04-08T12:31:12.033 回答