如何检查bool方法是否在if语句中返回值C ++

时间:2017-03-08 16:13:36

标签: c++ function if-statement

我正在创建类并在内部创建了这个方法 的 Input.cpp:

bool Input::CheckKeyPress(char key)
{
    SDL_Event ev;

    while (SDL_PollEvent(&ev))
    {
        keyState = SDL_GetKeyboardState(NULL);

        if (ev.type == SDL_KEYDOWN)
        {
            switch (key)
            {
            case 'w' :
                if (keyState[SDL_SCANCODE_W])
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            case 'a' :
                if (keyState[SDL_SCANCODE_A])
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            case 's' :
                if (keyState[SDL_SCANCODE_S])
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            case 'd' :
                if (keyState[SDL_SCANCODE_D])
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
        }
    }
}

我尝试在我的主类中的if语句中使用它,如下所示:

if (bool Input::CheckKeyPress(w))
    {
        //do stuff
    }

然而,正如预期的那样,我收到错误消息:" 此处不允许使用功能类型"那我该怎么办?

1 个答案:

答案 0 :(得分:0)

只需写下:

if (CheckKeyPress(w))
{
    //do stuff
}

您已经告诉编译器CheckKeyPress()方法返回bool。在这里,您只是调用该函数,因此您不需要再次提及返回类型。当控件调用函数CheckKeyPress()时,它将返回bool值,该值将在if语句中检查其真实性。

注意:有两种可能性:

  1. Instance是一个不同的类:
  2. 如果Instance完全是另一个类,CheckKeyPress()是 它包含的方法之一,那么你首先需要创建一个Instance类的对象,如下所示:

    Instance it = new Instance();   //or just Instance it;
    

    然后通过以下方式访问该功能:

    it.CheckKeyPress();
    
    1. 如果方法为static
    2. 在这种情况下,您需要将方法调用为:

      Input::CheckKeyPress(w)
      

      没有返回类型(bool)。

      希望这有帮助。感谢您的投入,@ user4581301。