Tôi bị kẹt với sự cố C++. Tôi có một lớp cơ sở có một con trỏ đối tượng tự tham chiếu bên trong vùng hiển thị riêng của lớp. Tôi có một hàm tạo trong lớp cơ sở để khởi tạo hai con trỏ này. Bây giờ tôi có lớp dẫn xuất của tôi có specifier truy cập là riêng tư (tôi muốn làm cho các hàm thành viên công khai của lớp cơ sở riêng của tôi). Bây giờ thông qua các hàm thành viên của lớp dẫn xuất của tôi, tôi muốn tạo một con trỏ đối tượng có thể trỏ đến dữ liệu riêng tư của lớp cơ sở, đó là các con trỏ đối tượng tự tham chiếu. Mã của tôi là:Làm cách nào để tạo một lớp dẫn xuất truy cập dữ liệu thành viên riêng tư?
class base{
private:
base *ptr1;
int data;
public:
base(){}
base(int d) { data=d }
};
class derived:private base{
public:
void member()
};
void derived::member()
{
base *temp=new base(val); //val is some integer
temp->ptr1=NULL; //I can't make this happen. To do this I had to declare all the
//private members of the base class public.
}
Sử dụng 'protected' thay vì' private'? –
Thực hiện lệnh getter 'protected' cho thành viên' private'? Thông thường, thiết kế của bạn là thiếu sót nếu bạn cần các giải pháp như vậy. –
Điều đó không hoạt động. Lỗi trình biên dịch. Cố gắng đó là tốt. Chỉ bằng cách công khai nó, tôi có thể truy cập nó. Nhưng điều đó sẽ làm cho mã dễ bị tổn thương. –