SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013
  • ShoSho

    ShoSho

    20 Ocak 2010