Selamün Aleyküm;
class Singleton
{
private:
static Singleton* instance;
public:
Singleton() : instance(new Singleton())
{
}
};
Bu kodu derlemeye çalıştığımda şu hatayı veriyor: 'error: 'Singleton* Singleton::instance' is a static data member; it can only be initialized at its definition
Singleton() : instance(new Singleton)'
^
Bunu bu şekilde değil de şöyle yazmam gerektiğini öğrendim:
class Singleton
{
private:
static Singleton* instance;
public:
Singleton()
{
}
};
Singleton* Singleton::instance = new Singleton();
Sormak istediğim: Neden ilk koddaki şekilde olmuyor da 2. koddaki gibi sınıf dışında yazmak durumundayız?
Diğer sorum ise kodumu direk şu şekilde yazdığımda da aynı şekilde çalışıyor, new ile bellek ayırmak yerine new kullanmasak da aynı şekilde çalışıyor. Neden new kullanayım? :
// Direk bu şekilde de çalışıyor:
class Singleton
{
private:
static Singleton* instance;
public:
Singleton()
{
}
};
Teşekkürler.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]