比方说我有:
#include <Windows.h>
#include <iostream>
#include <vector>
std::vector<int> Base::m_intList;
class Base
{
public:
Base();
protected:
static std::vector<int> m_intList;
};
class Derived : Base
{
public:
Derived();
protected:
bool fWhatever;
};
class MoreDerived : Derived
{
public:
MoreDerived();
private:
HRESULT DoStuff();
};
Base::Base()
{
}
Derived::Derived()
{
}
MoreDerived::MoreDerived()
{
}
HRESULT MoreDerived::DoStuff()
{
for (auto it = m_intList.begin(); it != m_intList.end(); it++)
{
std::cout << *it;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到"m_intList:无法访问类'MoreDerived'中声明的无法访问的成员".
问题:为什么我不能在派生类的DoStuff函数中访问受保护的静态成员?
class Derived : Base手段class Derived : private Base.私有继承的行为是:
protected基类的private成员成为派生类的成员.private基类的成员无权访问派生类的成员.所以m_intList是:
protected 在 Baseprivate 在 DerivedMoreDerived因此你的错误.