PDA

Tam Sürümünü Görmek İçin : Barton-Nackman


lektroon
23/05/2007, 12:08
Merhaba,

"Barton-Nackman trick" ve bununla ilintili oldugunu gordugum "curiously recurring template pattern" meselelerini detayli anlatabilecek biri var mi?


acehreli
23/06/2007, 22:59
"Barton-Nackman trick"i daha once duymustum ama ne oldugu bilmiyordum. Senin mektubundan sonra okudugumda gunluk kullanimla ilgili bir sey olmadigini gordum. :D

O yontemin anlatildigi her sitede gosterildigib gibi, bazi islevleri dogal olarak yazdigimizda derleyici iki islevden hangisini kullanacagina karar veremeyebiliyor.

Barton-Nackman numarasi ile derleyiciyi bu ikilemden kurtariyormusuz. Aklimin bir kenarinda dursun; belki bir gun isime yarar. :)

Barton-Nackman numarasi, "curiously recurring template pattern" denen bir yontemi kullaniyor. Turkcesi olarak "garipce oz yinelemeli sablon yontemi"ni uyduruyorum. :)

Bunun tanimi cok basit: yazdigimiz bir sinifi bir sablondan turetiyoruz, ama sablon parametresi olarak yine kendimizi kullaniyoruz:


// Bir sablon tanimli olsun
template <class T>
class UstSinif
{
/* ... */
};

// Ondan kendi turumuzu kullanarak turetiyoruz
class AltSinif : public UstSinif<AltSinif>
{
/* ... */
};


Olayin garipligi (curiously), daha kendimizi tanimlamadigimiz halde kendimizi sablon parametresi olarak kullanabiliyor olmamizda.

Bunu daha once kullandigimi saniyorum ama ne kadar dusunsem de kullanisli bir ornek bulamadim. :)

Ali