Nếu tôi muốn sử dụng một thành viên của một lớp mẫu cơ sở từ một mẫu có nguồn gốc lớp, tôi phải đưa nó vào phạm vi như vậy:C++ sử dụng tuyên bố trong hàm thành viên phạm vi
template <typename T>
struct base
{
void foo();
};
template <typename T>
struct derived : base<T>
{
using base<T>::foo;
};
Tại sao không tôi có thể đặt câu lệnh này sử dụng vào một phạm vi cục bộ, giống như các câu lệnh khác?
template <typename T>
struct base
{
void foo();
};
template <typename T>
struct derived : base<T>
{
void f()
{
using base<T>::foo; // ERROR: base<T> is not a namespace
}
};
Bạn đang cố gắng giải quyết vấn đề gì bằng cách thực hiện việc này? Bạn đang cố gắng tránh tiền tố tên 'foo' với' this-> '? –
Bằng cách sử dụng khai báo sử dụng, tôi tránh đặt trước tên 'foo' bằng' this-> ', yes. Bằng cách đặt nó trong một phạm vi địa phương, tôi đang cố gắng gây ô nhiễm phạm vi dẫn xuất chỉ khi cần thiết. – HighCommander4