Bağımlı kapsam nedir ve aşağıdaki hatanın bağlamında typename'nin anlamı nedir?Bağlantılı kapsamı olan iç içe şablonlar
$ 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;
}
Pekala, ama doğru değil, üye değişkeni yazıldığından mantıklı değil mi? – user383352
Evet, ancak bu, şablonların derleyici tarafından nasıl ayrıldığına dair bazı ayrıntılar nedeniyle mutlaka yardımcı olmaz. Bu sorunun kabul edilen cevabına bakın: http://stackoverflow.com/questions/642229/why-do-i-need-to-use-typedef-typename-in-g-but-not-vs –
Ayrıca buldum [ Bu cevap] (http://stackoverflow.com/a/6571836/24874) ilk defa bu hata ve konseptin karşısına geçerken çok yardımcı olacak. –