SORU
14 EKİM 2009, ÇARŞAMBA


C statik sabit dize (sınıf üyesi)

Bir sınıf (şekil-fabrika bu durumda) için özel bir statik sabit olmasını isterim. Böyle bir şey yapmak istiyorum.

class A {
   private:
      static const string RECTANGLE = "rectangle";
}

Ne yazık ki (g ) C derleyicisi gibi hata her türlü.

ISO C başlatma yasaklıyor ‘’. DİKDÖRTGEN üyesi

sınıf içinde olmayan bir tamsayı türü statik veri üyesi başlatma geçersiz‘:: std string’

hata: yapım ‘DİKDÖRTGEN’ statik

Bu üye tasarımı bu tür bir standart ile uyumlu olmadığını söylüyor. Nasıl bir özel dizge sabiti (ya da belki) bir ortak kullanmak zorunda kalmadan var mı #Direktifi (veri uglyness önlemek istiyorum. genellik!) tanımlamak

Herhangi bir yardım için teşekkür ederiz. Teşekkürler.

CEVAP
14 EKİM 2009, ÇARŞAMBA


Sınıf tanımının dışında bir statik üyesi tanımlamak ve initailizer sağlamak için var.

İlk

// In a header file (if it is in a header file in your case)
class A {   
private:      
  static const string RECTANGLE;
};

ve sonra

// In one of the implementation files
const string A::RECTANGLE = "rectangle";

Aslında kullanmaya çalışıyorlardı sözdizimi (başlatıcı sınıf tanımı içinde) sadece integral ve numaralama türleri ile izin verilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012