SORU
22 Temmuz 2010, PERŞEMBE


Bağımlı kapsamı ile iç içe şablonlar

Bağımlı kapsamı nedir ve aşağıdaki hata bağlamında typename anlamı nedir?

$ make
g   -std=gnu  0x main.cpp
main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope
make: *** [all] Error 1


/*
 * main.cpp
 */

#include <vector>
#include <memory>

template<typename T>
struct ptrModel
{
 typedef std::unique_ptr<T> Type;
};


template<typename Data>
struct ptrType
{
 typedef ptrModel< std::vector<Data> >::Type Type;
};

int main()
{
 return 0;
}

CEVAP
22 Temmuz 2010, PERŞEMBE


Derleyici tam olarak ne yapacağını söyledi. ptrModel<std::vector<Data> >::Type, şu şekilde: önce typename yaz

 typedef typename ptrModel<std::vector<Data> >::Type Type;

nedeniderleyici bu noktada ptrModel<std::vector<Data> >::Type Bir üye değişkeni veya iç içe geçmiş bir tür açıklar olup olmadığını bilmiyor bu gereksinim için. Bunu bile anlaması bakarak tanımı ptrModel çünkü olabilir bir uzmanlık ptrModel std::vector<Data> başka bir yerde program değil kazanılmış henüz hangi değişiklikleri hangi malzemeler ::Type ifade eder. Bunu açıkça söyleyin.

ptrModel<std::vector<Data> >::Type var adı "bağımlı bir kapsam dahilinde olduğu için"bağlıdırbir şablon örneği başlatıldığında.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RyanXLT

    RyanXLT

    22 Ocak 2011
  • sknbp

    sknbp

    16 Kasım 2006
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009