Что означает код дерева поведения C ++ в верхней части BTSK, когда он говорит Behavior (): m_eStatus (BH_INVALID) {}? - PullRequest
0 голосов
/ 08 февраля 2020

Я новичок в программировании на C ++ и изучаю стартовый комплект Tree Behavior Tree, чтобы создать новый каркас ИИ. Мне трудно разобраться в коде Behavior Tree Starter Kit. Учитывая этот код C ++ для дерева поведения Game AI, что означает часть кода вверху (которая, кажется, устанавливает начальный статус или что-то в этом роде)? А что такое виртуальная часть?


Behavior()
:   m_eStatus(BH_INVALID)
{
}

virtual ~Behavior()
{
}

Вот полный код, а также что означает virtual Status update() = 0;:

class Behavior
/**
 * Base class for actions, conditions and composites.
 */
{
public:
    virtual Status update()             = 0;

    virtual void onInitialize()         {}
    virtual void onTerminate(Status)    {}

    Behavior()
    :   m_eStatus(BH_INVALID)
    {
    }

    virtual ~Behavior()
    {
    }

    Status tick()
    {
        if (m_eStatus != BH_RUNNING)
        {
            onInitialize();
        }

        m_eStatus = update();

        if (m_eStatus != BH_RUNNING)
        {
            onTerminate(m_eStatus);
        }
        return m_eStatus;
    }

    void reset()
    {
        m_eStatus = BH_INVALID;
    }

    void abort()
    {
        onTerminate(BH_ABORTED);
        m_eStatus = BH_ABORTED;
    }

    bool isTerminated() const
    {
        return m_eStatus == BH_SUCCESS  ||  m_eStatus == BH_FAILURE;
    }

    bool isRunning() const
    {
        return m_eStatus == BH_RUNNING;
    }

    Status getStatus() const
    {
        return m_eStatus;
    }

private:
    Status m_eStatus;
};
...