Tôi đang viết lớp chuỗi tùy chỉnh lười biếng.Không thể xác định thành viên của typedef phụ thuộc
template <typename charT, typename traits = std::char_traits<charT>>
class lazy_basic_string
{
class char_proxy
{
char_proxy& operator=(charT ch);
};
char_proxy operator[](size_type i);
}
Sau đó, tôi muốn xác định các phương thức này ngoài khai báo lớp học.
template <typename charT, typename traits>
using char_proxy = typename lazy_basic_string<charT, traits>::char_proxy;
template <typename charT, typename traits>
char_proxy<charT, traits>& char_proxy<charT, traits>::operator=(charT ch)
{
...
}
Nhưng tôi đã nhận biên dịch báo lỗi:
cannot define member of dependent typedef char_proxy
Vì vậy, tôi không thể tìm ra vấn đề là những gì ở đây. Tại sao trình biên dịch không thể sử dụng phím tắt char_proxy thay vì lazy_basic_string :: char_proxy?
Tôi đang sử dụng g ++ 4.7. Có vẻ như định nghĩa của các thành viên lớp theo bí danh mẫu không được hỗ trợ nên sẽ tốt hơn nếu bạn tránh tính năng này. – eucpp