【问题标题】:multi level inheritance in c++C++中的多级继承
【发布时间】:2015-03-25 22:06:10
【问题描述】:

假设有 3 级继承。

A类

B类的方法可以访问C派生的成员吗?

假设合适的继承模式。

【问题讨论】:

  • 您能更具体地说明您要完成的工作吗?
  • 你试用的时候发生了什么?
  • 我不知道为什么投反对票。答案显然是否定的,但是……在这方面答案是合适的。

标签: c++ inheritance multi-level


【解决方案1】:

如果没有“技巧”,父类无法访问子类的数据,例如

class A
{
protected:
  int m_a;
};

class B : public A
{
protected:
  int m_b;
};

B 可以访问 m_a,A 不能访问 m_b。要获得这种行为,您可以使用多态性和访问器函数

class A
{
protected:
  virtual int GetVar() { return m_a; }
private:
  int m_a;
}

class B : public A
{
protected:
  virtual int GetVar() { return m_b; }
private:
  int m_b;
}

现在A可以通过调用GetVar()例如访问m_b

void A::DoSomething()
{
  // I want to do something to the variable, 
  int myVar = GetVar();
}

现在如果实例类型为A,则调用A::GetVar(),如果实例类型为B,则改为调用B::GetVar()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多