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

  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • sghaff1

    sghaff1

    23 Mart 2009