Tôi đang học C++. Tài liệu hướng dẫn docs.microsoft.com/en-us/cpp/cpp/member-access-control-cpp nói:Truy cập các thành viên tĩnh công khai của một lớp cơ sở được chỉ định là riêng tư
Khi bạn chỉ định một lớp cơ sở là riêng tư, nó chỉ ảnh hưởng đến các thành viên không có tính chất. Các thành viên tĩnh công cộng vẫn có thể truy cập được trong các lớp dẫn xuất.
Tuy nhiên, đoạn mã sau hơi điều chỉnh từ ví dụ sau quote nguyên nhân lỗi C2247 trước:
'cơ sở :: y' không thể truy cập vì 'Derived1' sử dụng 'tư nhân' kế thừa từ ' Căn cứ'.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào về tình huống này.
class Base
{
public:
int x;
static int y;
};
class Derived1 : private Base
{
};
class Derived2 : public Derived1
{
public:
int ShowCount();
};
int Derived2::ShowCount()
{
int cCount = Base::y;
return cCount;
}
Sử dụng ':: Base :: y' để nhận đúng phạm vi. – Peter
Tôi nghĩ rằng ví dụ của Microsoft bị hỏng. – molbdnilo