Tôi không thể nghĩ ra một từ ngữ tốt hơn cho tiêu đề, do đó, nó là một chút gây hiểu lầm, tuy nhiên, tôi không nói về một đứa trẻ truy cập vào các biến của nó được thừa hưởng từ cha mẹ của nó, đó là dễ dàng đủ.Truy cập vào các biến được bảo vệ của phụ huynh
Những gì tôi đang nói về là thế này:
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
Tuy nhiên, nếu tôi cố gắng biên dịch này, nó sẽ phàn nàn về 'hp' là "tư nhân trong bối cảnh này". Vấn đề là đứa trẻ không cố gắng truy cập vào các biến của cha mẹ riêng của nó, nhưng một số lớp khác ', mà có thể hoặc không thể là một Child.
Một đối tượng có thể truy cập tất cả các biến và phương thức (công khai, được bảo vệ hoặc riêng tư) của một đối tượng khác (hai trường hợp riêng biệt trong bộ nhớ) cùng một lớp, vì vậy tôi nghĩ rằng nó sẽ hoạt động với điều này, vì nó kế thừa từ lớp có các biến mà nó đang cố gắng truy cập, nhưng có vẻ như tôi đã sai khi giả sử như vậy.
Bất kỳ mẹo nào?
P.S. Không phải là thô lỗ hoặc bất cứ điều gì, nhưng tôi biết rằng tôi chỉ có thể tạo phương thức get() và set(), nhưng tôi đã hy vọng một cách rõ ràng hơn.
Có rất nhiều lỗi trong mã của bạn như được viết ở đây (từ khóa được viết hoa không chính xác 'lớp', cú pháp thừa kế không chính xác, v.v.) mà tôi chắc chắn là lỗi chính tả không có trong mã gốc. Nó có thể hữu ích để có được một ví dụ tối thiểu mà không biên dịch được, sau đó sao chép và dán mã chính xác ở đây. –
@Tim Tôi nghĩ rằng bạn đã có một cuộc trò chuyện với chính mình trong một phút ở đó, cho đến khi tôi so sánh hồ sơ –
Vâng, tôi nên làm điều gì đó về điều đó. Nó không phải là duy nhất của một cái tên như tôi nghĩ. :-) –