9 NİSAN 2010, Cuma
Nerede C statik sabit başlatılamıyor
Bir Dersim var
class foo {
public:
foo();
foo( int );
private:
static const string s;
};
Nerede dize s başlatmak için en iyi yer kaynak dosyası mı?
CEVAP
9 NİSAN 2010, Cuma
Her yerdebirderleme birimi (genellikle bir .cpp dosyası):
foo.h
class foo {
static const string s; // Can never be initialized here.
static const char* cs; // Same with C strings.
static const int i = 3; // Integral types can be initialized here (*)...
static const int j; // ... OR in cpp.
};
foo.cpp
#include "foo.h"
const string foo::s = "foo string";
const char* foo::cs = "foo C string";
// No definition for i. (*)
const int foo::j = 4;
Eğer kodu sadece integral sabiti ifadeleri dışında kullanılırsa sınıf tanımı j
gibi) dışında i
tanımlamalısınız standartlarına göre ( * ). Ayrıntılar için aşağıdaki David'in yorum bakın.
Bunu Paylaş:
C statik sabit dize (sınıf üyesi)...
Neden't olmayan sabit başlatılama...
Template Metaprogramming - Numaralama ...
Nasıl statik değişkenleri başlatılamıy...
c statik bir dize sabit dize vs#...