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ş:
Dışarıda js fonksiyonu erişim kapsamı ...
JavaScript değişkenleri kapsamı nedir?...
Kod Kapsamı nedir ve nasıl ölçüyorsunu...
Önceden derlenmiş şablonlar Handlebars...
Tarayıcı kapsamı değişken $erişmeye�...