Tôi đã tự hỏi làm thế nào bảo vệ một thành viên con trỏ không const từ một đối tượng thông qua một phương pháp const. Ví dụ:Phương pháp C++ const trên thành phần con trỏ không const
class B{
public:
B(){
this->val=0;
}
void setVal(){
this->val = 2;
}
private:
int val;
};
class A{
public:
A():b(new B){}
void changeMemberFromConstMethod() const{
this->b->setVal();
}
private:
B * b; // how to protect data pointed in A::changeMemberFromConstMethod
}
Có thể "bảo vệ" dữ liệu A :: b được chỉ ra từ phương pháp của anh không? Sau nhiều nghiên cứu trên web, không có phản hồi hài lòng nào được tìm thấy.
Cảm ơn sự giúp đỡ của bạn.
"Bác sĩ, nó đau khi tôi làm điều này" - "Vì vậy, không làm điều đó". Nó không giống như bất cứ ai xoắn cánh tay của bạn và buộc bạn gọi 'setVal' từ một phương pháp const. Tôi cho rằng tôi không hiểu bản chất của vấn đề. –
Nó chỉ nhằm mục đích ví dụ. Ví dụ Nó giống như một đảm bảo tôi muốn thiết lập tức là không sửa đổi dữ liệu B. – Alex
Nếu bạn không muốn sửa đổi '* b', thì không cần. Tôi vẫn không hiểu bản chất của những khó khăn. –