枚举类中的c ++运算符重载

时间:2017-09-20 15:53:10

标签: c++ class enums overloading operator-keyword

所以我正在使用c ++编写游戏,在我的教程状态下,我有不同的步骤供用户使用,解释游戏的工作原理。我想在执行某个操作后增加用户所在的步骤。 (鼠标单击)。我尝试重载++运算符,但收到错误binary '++': 'STEPS' does not define this operator or a conversion to a type acceptable to the predefined operator。我正在使用visual studio,它的错误代码为C2676

我的枚举类设置如下:

enum class STEPS
{
    ONE,
    TWO,
    END_OF_LIST
};

STEPS& operator++(STEPS& s)
{
    s = staic_cast<STEPS>(static_cast<int>(s) + 1);
    if (s == STEPS::END_OF_LIST)
    {
        s = static_cast<STEPS>(static_cast<int>(s) - 1);
    }
    return s;
}

在我的教程状态类的更新功能中,我检查是否单击了鼠标。如果是我正试图增加步骤。

//这是在标题中定义的,并在初始化时设置为STEPS :: ONE STEPS steps;

TutorialState::Update()
{
    // If mouse was clicked
    if (mouse.Left())
    {
        steps++; // this is giving me an error.
    }
}

1 个答案:

答案 0 :(得分:13)


q)0!select last cumsum by date,ts,sym from update cumsum: sums qty by date,sym from t
date ts sym cumsum
------------------
d1   t1 s1  -200
d1   t2 s2  200
d1   t3 s1  0
d1   t4 s1  500
d1   t5 s2  -100
d2   t1 s1  -400

适用于q)u:![t;();`date`sym!`date`sym;(enlist`cumsum)!enlist(sums;`qty)] q)0!?[u;();`date`ts`sym!`date`ts`sym;(enlist`cumsum)!enlist(last;`cumsum)]

STEPS& operator++(STEPS& s); ,您需要

++step

已选择使用额外参数step++来区分前后增量运算符。

您可以阅读Q for Mortals: §9. Queries了解更多详情。