SORU
7 EKİM 2010, PERŞEMBE


Ne kadar ileri bir şablon sınıf ilan etmek?

#ifndef __TEST__
#define __TEST__

namespace std
{
    template<typename T>
    class list;
}

template<typename T>
void Pop(std::list<T> * l)
{
    while(!l->empty())
        l->pop();
}

#endif

ve benim ana fonksiyonu kullanılır. Hataları aldım. Tabii ki, std::list için daha fazla şablon parametreler (sanırım ayırıcısı) olduğunu biliyorum. Ama, bu başka bir konu. İleriye ilan edebilmek için şablon bir sınıf dolusu şablon bildirimi bilmek zorunda mıyım?

EDİT: önce bir işaretçi kullanarak değildim - bir referans oldu. İşaretçi ile halletmeye çalışacağım.

CEVAP
7 EKİM 2010, PERŞEMBE


Sorun ileri-ilan bir şablon sınıfı değil. Evet, tüm şablon parametreleri bilmek gerekiyorve değerlerineileriye doğru beyan edebilmek için:

namespace std {
  template<class T, class Allocator = std::allocator<T>>
  class list;
}

Ama namespace std bile böyle bir ileri bir açıklama yapmak açıkça standart tarafından yasaklanmıştır:sadecestd koymak için iznin şey bir şablonduruzmanlıkgenellikle kullanıcı tanımlı bir tür std::less. Başkasının gerekirse ilgili metin alıntı yapabilirsiniz.

Sadece #include <list> ve bunun için endişelenme.

Oh, bu arada, herhangi bir ad çift alt çizgi içeren __TEST__ yerine TEST_H gibi bir şey kullanmak gerekir bu yüzden uygulama tarafından kullanılmak üzere ayrılmış. Bir uyarı veya bir hata olmayacak, ama eğer program uygulama tanımlı bir tanıtıcı ile bir çatışma varsa, ya da düzgün çalıştırmak için garanti değilkötü kurdu. Ayrıca yasaktır adları ile başlayarak büyük harfle, diğerleri arasında, ve ardından alt çizgi. Genel olarak, ne ile uğraştığını bilmeden alt çizgi ile işlerin başlama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009