SORU
1 Temmuz 2009, ÇARŞAMBA


Varsayılan olarak C yapı 0 başlatılmış üyesi?

struct Bu var:

   struct Snapshot
    {
        double x; 
        int   y ;

    };

x y 0 olmasını istiyorum. Varsayılan olarak 0 olacak ya da yapmak zorundayım:

Snapshot s= {0,0};

Yapısı sıfır diğer yolları nedir?

CEVAP
1 Temmuz 2009, ÇARŞAMBA


Eğer yapı başlatılamıyor musun diye boş değildir.

Snapshot s; // receives no initialization
Snapshot s = {}; // value initializes all members

İkinci tüm üyeleri, ilk belirtilmemiş değerlerinde sıfır bırakır yapar. Özyinelemeli olduğunu unutmayın:

struct Parent { Snapshot s; };
Parent p; // receives no initialization
Parent p = {}; // value initializes all members

İkinci p.s.{x,y} sıfır yapacak. Yapamıyorsanız yapı kurucular varsa bu toplama başlatıcı listeleri kullanın. Eğer durum buysa, o kurucular için uygun initalization eklemek gerekir

struct Snapshot {
    int x;
    double y;
    Snapshot():x(0),y(0) { }
    // other ctors / functions...
};

0 için her iki x ve y başlatılacaktır. Not kullanabileceğiniz x(), y() başlatılamıyor onları hiçe sayarak kendi türü: Bu değer başlatma ve genellikle verimleri uygun bir başlangıç değeri (int için 0, 0.0 çift, arama varsayılan oluşturucu için kullanıcı tanımlı tipler var kullanıcı ilan kurucular, ...). Bu özellikle eğer bir yapı şablonu ise önemlidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • Tianna Sierra Dance

    Tianna Sierr

    16 EYLÜL 2013
  • tunez4you

    tunez4you

    20 EKİM 2008