Class Scope under Single Inheritance

Class Scope under Multiple Inheritance

#include <iostream>

class ZooAnimal {
public:
   void gender(){
      std::cout << "ZooAnimal::gender()\n";
   }
   void color(){
      std::cout << "ZooAnimal::color()\n";
   };
   void highlight() {
      std::cout << "ZoomAnimal::highlight()\n";
   };
};

class Endangered {
public:
   void highlight() {
      std::cout << "Endangered::highlight()\n";
   };
   void print() {
      std::cout << "Endangered::print()\n";
   }
};

class Bear : public ZooAnimal {
public:
   void color(){
      std::cout << "Bear::color()\n";
   }
};

class Panda : public Bear, public Endangered {
public:
};

int main() {

   Panda p;

   p.color(); // Bear::color()
   p.gender(); // ZooAnimal::gender()
   p.print(); // Endangered::print()
   //p.highlight(); // Error: ambiguous
   p.ZooAnimal::highlight(); // ZoomAnimal::highlight()
   p.Endangered::highlight(); // Endangered::highlight()
}