【发布时间】:2010-10-07 16:42:08
【问题描述】:
我有一个枚举,看起来像这样:
enum Suit {Clubs, Diamonds, Hearts, Spades};
我想重载增量运算符,这样我就可以轻松地循环这四个家伙。
当变量是梅花、方块或红心时,没有问题。黑桃条件给我带来了一些麻烦。
我的第一个直觉是定义它,以便当变量是黑桃时,增量设置它等于梅花。问题是这似乎使得遍历枚举中的 4 个值成为不可能。
如果我这样做
for(Suit i=Clubs;i<Spades;++i)
{cout<<i<<endl;}
那么我的输出只会发送到 Hearts。
如果我愿意
for(suit i=Clubs;i<=Spades;++i)
{cout<<i<<endl;}
然后我的输出将永远循环!
所以,我显然可以想到一些解决方法...我只是不确定惯用的 C++ 的作用是什么。
我是否应该重新定义增量,以便尝试增加 Spade 会导致 Spade?或者可能引发异常?
重申:我绝对可以想出一些解决此问题的技巧。我只是希望有经验的程序员的指导告诉我他们认为最“正常”的解决问题的方法。
【问题讨论】:
标签: c++ operator-overloading for-loop