在 C++ 类中,如何从另一个子集中访问超集的变量?这只能作为示例以直观方式显示,以供您理解。
中央情报局高于总统,有权对总统保密信息。
class CIA {
public:
bool aliensExist = true; // 100%
};
class President {
public:
bool doAliensExist() {
return aliensExist; // Not sure, no access to CIA's aliensExist variable
}
};
class Subset : public President, public CIA {
};
int main() {
Subset subset;
cout << "Aliens exist = " << subset.doAliensExist() << endl;
}
如何从 Subset
类中使用 President
类中的方法访问 aliensExist
?
我知道上面的例子是不合逻辑的,当然 President
不能访问 CIA
除非它是它的直接子集,但我想知道什么是好的方法是这样的吗?
最佳答案
您错误地(过度)使用了继承。当然,您很难找到解决方案,因为该模型从根本上是错误的。您似乎认为类层次结构在某种程度上类似于数学集合...
类 D
应该继承自类 B
当且仅当它们之间存在 is a
的关系,即 D 是B
.
在您的示例中,从 CIA
和 President
继承是没有意义的,因为该实体将是 CIA 和总统同时。我认为这违反宪法(或至少是非法的)。
所以你需要改变你的模型。 OOP 和继承不是万能的 chalice 。
关于c++ - 从另一个子集中的子集中访问超集变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438051/