Qt - typ wyliczeniowy

0

Czytam czyjś kod i mam taką klasę

class Character
{
    Q_GADGET;

public:
    enum ClassType {
        Warrior, Mage, Archer
    };

//coś tam dalej jest

}

gdzieś w pliku źródłowym jest definicja takiej funkcji

Character::ClassType Character::classType() const
{
    return mClassType;
}

moje pytanie jest takie:
jak czytać tą funkcję Character::ClassType Character::classType() const z typem wyliczeniowym ? Jak to mam rozumieć co tu się dzieje ? Bo jeszcze z takim zapisem się nie spotkałem

3

To nie jest po prostu metoda klasy Character, która zwraca wartość membera typu Character::ClassType - mClassType? No i constowa, czyli nie zmienia stanu obiektu.

0

sory, podałem złą funkcję. Powinna być

void Character::setClassType(Character::ClassType classType)
{
    mClassType = classType;
}
3

z czym tu masz problem? To jest zwykłe przypisanie parametru funkcji do pola obiektu.

0

@zkubinski: Zadaj pytanie dokładniej -- co cię konkretnie trapi w tym:

zkubinski napisał(a):
void Character::setClassType(Character::ClassType classType)
{
    mClassType = classType;
}
0

@_dominik:

z czym tu masz problem? To jest zwykłe przypisanie parametru funkcji do pola obiektu.

dobra, już się rozjaśniło - masz rację, tylko nie do końca rozumiałem jak to się robi i o co w tym chodzi, bo przeraził mnie dziwny zapis i próbowałem go zrozumieć

można tak

setClassType(Character::Coś)

lub tak

setClassType(1)
3
zkubinski napisał(a):

można tak

setClassType(Character::Coś)

lub tak

setClassType(1)

To jest cała patologia "starszego" enuma w C/C++ (wymienność z integerem i innymi typami) - masz tam warningi
Porządny jest enum class we współczesnych C++

1 użytkowników online, w tym zalogowanych: 0, gości: 1