所以我正在使用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.
}
}
答案 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了解更多详情。