Jak porównać wartość zmiennej typu wyliczeniowego?

0

// ConsoleApplication50.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
    enum Kolor {Czerwony,Niebieski,Zolty};

    Kolor moj_kolor = Czerwony

    if (moj_kolor = Czerwony)
    {
        cout << "Prawda " << endl;
    }

    return 0;
}

Przepraszam Bardzo ale nie wiem co tu jest złe , nie rozumiem enum ktoś może mi wytłumaczyć ?

4

Nie masz średnika to się nie kompiluje. Przypisujesz zamiast porównywać. (swoją drogą przypisanie intenum się nie skompiluje w C++). Jak chcesz porównać/przypisać to użyj enumeratorów, np

if(moj_kolor == Czerwony)
{
    cout << "Prawda " << endl;
}
6

Gołe enum'y w C++ są dla mnie takie trochę "upośledzone", bo przy wywołaniu brakuje kontekstu, do którego taki enum się odnosi. IMHO lepiej korzystać z enum class:

#include<iostream>
using namespace std;

enum class Month{
    January,
    February
};

int main()
{
    Month month = Month::January;
    cout << (month == Month::January ? "January" : "February") << endl;
    return 0;
}

Od razu widać, że jest to Month::January, a nie tylko January, które może odnosić się do... imienia bohatera.

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