Qt - typ wyliczeniowy

Qt - typ wyliczeniowy
ZK
  • Rejestracja: dni
  • Ostatnio: dni
0

Czytam czyjś kod i mam taką klasę

Kopiuj
class Character
{
    Q_GADGET;

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

//coś tam dalej jest

}

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

Kopiuj
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

Trisolaris
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
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.

ZK
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
void Character::setClassType(Character::ClassType classType)
{
    mClassType = classType;
}
DO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 85
3

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

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
0

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

zkubinski napisał(a):
Kopiuj
void Character::setClassType(Character::ClassType classType)
{
    mClassType = classType;
}
ZK
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
setClassType(Character::Coś)

lub tak

Kopiuj
setClassType(1)
AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
3
zkubinski napisał(a):

można tak

Kopiuj
setClassType(Character::Coś)

lub tak

Kopiuj
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++

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.