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 long
derleme ama s float
s:
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
İ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ı.
Neden Java statik olarak bir sınıf bil...
't neden C# Statik Yöntemler bir ...
Neden't statik Java yöntemleri ge...
Neden yok C# statik bir yöntem bir örn...
Neden Mockito statik yöntemler alay de...