Thread overview
Kurucusu tanımlanan yapılar {} ile kurulamıyorlar
January 07, 2010

D2'de yeni değişen bir kural: Programcı tarafından kurucu işlev tanımlanınca, artık C'den kalan '{}' yazımı çalışmıyor:

struct Dikdörtgen
{
   double uzunluk;
   double genişlik;
   double alan;

   this(double uzunluk, double genişlik)
   {
       this.uzunluk = uzunluk;
       this.genişlik = genişlik;
       this.alan = uzunluk * genişlik;
   }
}

void main()
{
   auto şekil = Dikdörtgen(1.1, 2.2);

   // Kurucu işlevi tanımlı olduğu için DERLEME HATASI
   // Dikdörtgen şekil2 = { 3.3, 4.4 };
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 23, 2010

Evet dediğiniz örnek çalışmıyor. Tam olması gereken gibi.

Ancak şu örnek bende doğru çalışıyor :

void main()
{
   struct GününSaati
   {
       int saat;
       int dakika;
   }

   GününSaati dersBaşı = { 8, 30 };

}

Çalışmasa derslerden silecektim ancak çalışıyor. Yoksa bendemi D ile ilgili hata buldum :-P ( Bulsam sevinirim :-D )

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 23, 2010

O zaman dersi kurulum bildiriyor ise {} ile kurulamayacağını ekleyim. (Yarın :-) )

Ama anlamadığım bir şey var. Eğer işleve kurucu işlev tanımlatmadıysak derleyici zaten kendi tanımlamıyor mu ?
Aynı biçimde tanımlıyorsa ne farkı kaldı ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 23, 2010

Kurucu işlevi tanımlanmamışsa {} çalışır. Sanırım kaldırılacaktı. (?)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 23, 2010

Alıntı (canalpay):

>

O zaman dersi kurulum bildiriyor ise {} ile kurulamayacağını ekleyim

Bence hiç karıştırma. Bence yalnızca bilinmesi gereken bir olanak olarak dursun. Başka kodlarda görünce ne olduğunu bilelim yeter.

Alıntı:

>

Ama anlamadığım bir şey var. Eğer işleve kurucu işlev tanımlatmadıysak derleyici zaten kendi tanımlamıyor mu ?
Aynı biçimde tanımlıyorsa ne farkı kaldı ?

Yani derleyici {} kullanımında üyeleri art arda ilkliyor. Bizim yazdığımız kurucu ise bambaşka hesaplar ve işlemler yapıyor olabilir.

Bence derleyicinin mantığı şöyle işliyor, "eğer kullanıcı bir kurucu tanımlamışsa, bu yapıda özel bir durum var demektir; ben araya girerek belki de yanlış ilklemeler yapmayayım."

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]