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

  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • schmittastic

    schmittastic

    9 EYLÜL 2009