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

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • kruno j

    kruno j

    6 Mayıs 2007
  • The Weavers of Eternity Paracord Tutorials

    The Weavers

    1 Ocak 2014