SORU
16 Mart 2010, Salı


Neden't statik inş izin yüzer değil mi?

Aslında sadece sabit tanımlar uygulama üzerinden kullanılan bir grup elinde olan bir Dersim var. Nedense rağmen longderleme ama s floats:

class MY_CONSTS
{
public :
    static const long   LONG_CONST = 1;      // Compiles 
    static const float FLOAT_CONST = 0.001f; // C2864
};

Aşağıdaki hata verir:

1>c:\projects\myproject\Constant_definitions.h(71) : error C2864: 'MY_CONSTS::FLOAT_CONST' : only static const integral data members can be initialized within a class

Bir şey mi kaçırdım?

CEVAP
16 Mart 2010, Salı


İstediğin asıl soru: standart dediği için"".

Statik, sabit, değişkenayrılmaztürleri (numaralandırma dahil) içinde bir sınıf bildirimi başlatılmamış olabilir. Eğer bir derleyici-line yüzer başlatma destekliyorsa, bir uzantısıdır. Diğerleri belirttiği gibi, statik, non-integral sürekli değişkenler ile baş etmenin en iyi yolu tanımlamak için ve sınıfın ilgili kaynak dosya (başlık yok) başlatılamadı.

Bölüm 9.2 C Standart "Sınıf Üyeleri" Madde 4:

Birüye Bildiricisibir içerebilir sabit başlatıcıeğer statik bir üye (9.4) ilan etmesi halinde sadece integral ya inş inş numaralandırma yazın 9.4.2 bakın.

Bölüm 9.4.2 "Statik Veri Üyeleri" Madde 2:

Eğer statik veri üyesi sabit ise integral ya da sabit numaralandırma türü, sınıf tanımı içinde, kendi ulusal bir belirtebilirsinizsabit başlatıcı bir integral sabiti olacaktır ifade (5.19). Bu durumda, üye sürekli olarak ayrılmaz görünebilir ifadeler. Üye hala olacaktır bu ad bir kapsam içinde tanımlanan programda kullanılan ve ad kapsam tanımlama içermemelidir başlatıcı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • Hudson Music

    Hudson Music

    13 Mart 2007
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009