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

  • NPR

    NPR

    22 NİSAN 2006
  • RFS Dan

    RFS Dan

    22 Temmuz 2014
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009