C++0X - enum class – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++0X - enum class – C / C++ – Fórum – Programujte.comC++0X - enum class – C / C++ – Fórum – Programujte.com

 

Jan Kubalek
~ Anonymní uživatel
16 příspěvků
24. 9. 2011   #1
-
0
-

Ahoj,

mam dotazek co se tyce noveho standardu C++0X ...

Trosku jsem zapremyslel, a zjistil, ze by se mi celkem hodili "typove presne enumy"

enum class MOUSE_BUTTON {
                        LEFT_DOWN = 0,
                        LEFT_UP,
                        RIGHT_DOWN,
                        RIGHT_UP,
                        MIDDLE_DOWN,
                        MIDDLE_UP,
                        NOTHING
                        };

enum class MOUSE_ACTION {
                        DOUBLE_CLICK = 0,
                        CLICK,
                        HOLD,
                        MOTION,
                        NOTHING
                        };

buhozel se musin  ne cleny enum class odkazovat MOUSE_ACTION::DOUBLE_CLICK ...

Neexistuje nejaka "konstrukce" jako napriklad u template(using namespace std; using class MOUSE_ACTION nufunguje), abych vsede nemusel psat MOUSE_ACTION::menber ? ...

Diky moc za rady ...  

Nahlásit jako SPAM
IP: 212.111.19.–
crazy
~ Moderátor
+10
Grafoman
25. 9. 2011   #2
-
0
-

#1 Jan Kubalek
proc  nepouzijes klasicky enum?

enum barvy { CERVENA = 0, MODRA, ZELENA };
Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
JK
~ Anonymní uživatel
20 příspěvků
25. 9. 2011   #3
-
0
-

Protoze enum se da yamenit ya jakekoliv cislo ..staci napsat func((barvy)1956833) ... a enum class by jit zamenit nemelo ... 

Proste chci, aby uzivatel musel napsat jmeno "cisla" a ne jenom cislo, jak to umoznuje enum ...

Nahlásit jako SPAM
IP: 212.111.19.–
ondra.holub+1
Stálý člen
27. 9. 2011   #4
-
0
-

#3 JK
No tak si na to nadělej konstanty (sice se ten kód tím nezlepší, ale co už):

enum class MOUSE_BUTTON
{
    LEFT_DOWN = 0,
    LEFT_UP,
    RIGHT_DOWN,
    RIGHT_UP,
    MIDDLE_DOWN,
    MIDDLE_UP,
    NOTHING
};

static const MOUSE_BUTTON LEFT_DOWN = MOUSE_BUTTON::LEFT_DOWN;

Nahlásit jako SPAM
IP: 194.138.12.–
m->29+6
Super člen
27. 9. 2011   #5
-
0
-

#3 JK
Keď je niekto idiot a bude tam pchať namiesto preddefinovaných (zrozumiteľných) konštánt nejaké čísla, tak je to jeho bordel.

A mne sa zdá byť MOUSE_BUTTON::LEFT_DOWN zrozumitelnejšie. Čo si na tom vadí? Aspoň sa ti nesviní globálny namespace a konštanty sú tam, kde by ich rozumný človek hľadal.

A myslím, že C++ má na rozdiel od C silnejší typový systém práve v tom, že ti nedovolí pretypovať na enum číslo iné ako je definované v enum konštante.

Na čo to vlastne potrebuješ? Čomu chceš zabrániť?

Nahlásit jako SPAM
IP: 83.240.51.–
Jan Kubalek
~ Anonymní uživatel
16 příspěvků
28. 9. 2011   #6
-
0
-

#5 m->29
prave ze dovoli ...

enum XYZ {X = 0, Y ,Z};

void function(XYZ i) {}

int main
  {
      fuction((XYZ)12563);
  }

Jde vklidu skompilovat a spustit ...

Nahlásit jako SPAM
IP: 195.113.65.–
Jan Kubalek
~ Anonymní uživatel
16 příspěvků
28. 9. 2011   #7
-
0
-

Ale jinak je pravda, ze je to prehlednejsi, clovek aspn vi, co kcemu patri ..:)

Nahlásit jako SPAM
IP: 195.113.65.–
m->29+6
Super člen
28. 9. 2011   #8
-
0
-

#6 Jan Kubalek
Hej, teraz som si to overil a máš pravdu. No myslím, že v Mistrovství písali opak. Takisto na prednáške som niečo také počul. Musím si to vyhľadať.

No výčtový typ je hlavne pre teba. Ak si rozumný človek, tak nebudeš robiť divné hrátky s číslami. A ak to spraví niekto iný tak ti nezostáva nič iné ako nad takým človekom zaplakať.

Nahlásit jako SPAM
IP: 83.240.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 51 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý