【问题标题】:C++ pass enum as parameterC++ 将枚举作为参数传递
【发布时间】:2010-05-20 00:18:20
【问题描述】:

如果我有这样一个简单的卡片类:

class Card {
        public:
            enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES };
            Card(Suit suit);
    };

然后我想在另一个文件中创建卡片的实例,如何传递枚举?

#include "Card.h"
using namespace std;
int main () {
    Suit suit = Card.CLUBS;
    Card card(suit);
    return 0;
}

错误:“西装”未在此范围内声明

我知道这行得通:

#include "Card.h"
using namespace std;
int main () {
    Card card(Card.CLUBS);
    return 0;
}

但是如何在另一个文件中创建一个 Suit 类型的变量呢?

【问题讨论】:

  • WTF,Card.CLUBS 不给你报错???我认为它需要是 Card::CLUBS... x_x

标签: c++ parameters enums


【解决方案1】:

使用Card::Suit 引用不在 Card 范围内的类型。 ...实际上,您也应该像这样引用西装; Card.CLUBS 编译我有点惊讶,我一直认为你必须这样做 Card::CLUBS。

【讨论】:

  • 使用 Card.CLUBS 因为它会匹配问题。
【解决方案2】:

Suit 是 Card 类命名空间的一部分,所以试试:

Card::Suit suit = Card::CLUBS;

【讨论】:

  • 天哪,这不值得付出努力。我将使用 int 并在代码中添加注释。谁能想到一个卡牌游戏,俱乐部会发生变化,但每次都需要完整的枚举参考?
猜你喜欢
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多