在使用受保护和继承时无法访问在类中声明的私有成员

cannot access private member declared in class while using protected and inheritance

本文关键字:声明 成员 访问 受保护 继承      更新时间:2023-10-16

我在使用protected成员时遇到了一些问题。相关代码和我得到的错误如下。这些类具有所有需要的函数和变量。我刚刚总结了相关部分。我该怎么办?

MFS.h:

class MFS
{
protected:
MatrixXd commandedLateral;
};

CSimulator.h:

class CSimulator : MFS
{
};

CSimulator.cpp:

void CSimulator::calculateActuator(MFS* mfs)
{
actuator = -gain * mfs->commandedLateral(1,0);
}

错误 C2248:"MFS::命令横向":无法访问在类"MFS"中声明的私有成员

protected成员只能通过派生类访问,即你不能通过基类MFS访问它。

(强调我的(

类的受保护成员只能访问

1(该班级的成员和朋友;

2( 对任何派生类的成员and friends (until C++17)该类,但仅当对象的类通过该类时 访问的受保护成员是派生类还是派生类 该派生类:

例如,以下代码应该可以正常工作。

void CSimulator::calculateActuator(CSimulator* mfs)
{
actuator = -gain * mfs->commandedLateral(1,0);
}