protectedで継承

深い継承は使わない方がいいかなー。

#include <iostream>
using namespace std;

class Foo {
protected:
  int i;

public:
  Foo(int i) : i(i) {}
  void foo() {
    cout << i << endl;
  }
};

class Bar : /*private*/ protected Foo {
public:
  Bar(int i) : Foo(i) {}
  void bar() {
    cout << i << endl;
  }
};

class Zoo : private Bar {
public:
  Zoo(int i) : Bar(i) {}
  void zoo() {
    cout << i << endl;
  }
};

int main() {
  Zoo zoo(100);
  zoo.zoo();
  return 0;
}