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

  • ehowhome

    ehowhome

    22 NİSAN 2009
  • natescamp

    natescamp

    30 NİSAN 2009
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011