Phạm vi phụ thuộc là gì và ý nghĩa của tên tệp trong ngữ cảnh của lỗi sau là gì?Mẫu lồng nhau có phạm vi phụ thuộc
$ 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;
}
Được rồi, nhưng không phải là sự thật khi gõ một biến thành viên là không hợp lý? – user383352
Có, nhưng điều đó không nhất thiết phải trợ giúp do một số chi tiết về cách các mẫu được phân tích cú pháp bởi trình biên dịch. Xem câu trả lời được chấp nhận cho câu hỏi này: http://stackoverflow.com/questions/642229/why-do-i-need-to-use-typedef-typename-in-g-but-not-vs –
Tôi cũng tìm thấy [ câu trả lời này] (http://stackoverflow.com/a/6571836/24874) sẽ rất hữu ích khi gặp lỗi và khái niệm này lần đầu tiên. –