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

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011