SORU
9 EKİM 2008, PERŞEMBE


Başlatılıyor özel static üyeler

Bu aptal bir soru gibi geliyor, ama ne C özel, statik veri üyesi başlatmak için en iyi yolu nedir ? Bana garip linker hata verir bu ama denedim:

class foo
{
    private:
        static int i;
};

int foo::i = 0;

Sınıfın dışından özel bir üye başlatmak istemiyorum çünkü bu olduğunu tahmin ediyorum. Bunu yapmak için en iyi yolu nedir?

CEVAP
9 EKİM 2008, PERŞEMBE


Sınıf bildirimi başlık dosyası (Veya kaynak dosya yoksa paylaşılan) olmalıdır.
Dosya: foo.h

class foo
{
    private:
        static int i;
};

Ancak başlatma kaynak dosya içinde olmalıdır.
Dosya: foo.cpp

int foo::i = 0;

Eğer başlatma başlık dosyasında ise üstbilgi dosyası içeren her dosya statik üyesi bir tanım olacaktır. Bağlantı aşamasında böylece değişkeni başlatmak için bu kodu birden fazla kaynak dosyaları, tanımlı olarak linker hataları alırsınız.

Not:Matt Curtis: C eğer statik bir üye değişkeni int türü ise yukarıdaki basitleştirilmesi sağlar (, *, *int*8 örneğin 9*). puan Sonra doğrudan üstbilgi dosyasında sınıf bildirimi içinde: üye değişkeni bildirmek başlatmak

class foo
{
    private:
        static int const i = 42;
};

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007
  • Attempts at least

    Attempts at

    1 Ocak 2007