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

  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • listedabive

    listedabive

    30 Ocak 2007
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009