SORU
19 EYLÜL 2009, CUMARTESİ


Nasıl C bayrakları gibi numaralamalar kullanılır ?

Bayraklar güzel C gibi çalışır enumtedavi s# [Flags] öznitelik), ama C bunu yapmak için en iyi yolu nedir ?

Örneğin, yazmak istiyorum:

enum AnimalFlags
{
    HasClaws = 1,
    CanFly =2,
    EatsFish = 4,
    Endangered = 8
};

seahawk.flags = CanFly | EatsFish | Endangered;

Ancak, derleyici hatalarıint/enum dönüşümleri ile ilgili. Daha iyi bir yolu sadece döküm künt'den bu ifade var mı? Tercihen, destek ya da Qt gibi 3. parti kütüphanelerden yapıları güvenmek istemiyorum.

Cevaplarda belirtildiği Gibi, int seahawk.flags ilan ederek derleyici hata önlemek edebilirim. EDİT: Ancak, bazı mekanizma tipi emniyet uygulamak istiyorum, birisi seahawk.flags = HasMaximizeButton yazma bilmiyor.

CEVAP
19 EYLÜL 2009, CUMARTESİ


"Yol numaralama için bit operatörleri, olarak tanımlamak için: . doğru

enum AnimalFlags
{
    HasClaws = 1,
    CanFly =2,
    EatsFish = 4,
    Endangered = 8
};

inline AnimalFlags operator|(AnimalFlags a, AnimalFlags b)
{return static_cast<AnimalFlags>(static_cast<int>(a) | static_cast<int>(b));}

Vb. bit operatörleri geri kalanı. Eğer numaralama aralığı int aşarsa gerektiği gibi değiştirme aralığı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009
  • tunez4you

    tunez4you

    20 EKİM 2008
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005