C ++ передать перечисление в качестве параметра - PullRequest
11 голосов
/ 20 мая 2010

Если у меня есть простой класс, подобный этому, для карты:

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 в другом файле?

Ответы [ 2 ]

13 голосов
/ 20 мая 2010

Используйте Card::Suit для ссылки на тип, когда он находится вне области видимости карты. ... на самом деле, вы должны ссылаться на такие костюмы тоже; Я немного удивлен, что Card.CLUBS компилируется, и я всегда думал, что вам нужно сделать Card::CLUBS.

6 голосов
/ 20 мая 2010

Костюм является частью пространства имен карты класса, поэтому попробуйте:

Card::Suit suit = Card::CLUBS;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...