谁帮小弟我讲下C++的继承有关问题啊郁闷

哪位高手帮我讲下C++的继承问题啊。郁闷
#include   <string>
#include   <iostream>

using   namespace   std;
class   animo{
protected:
int   age;
public:
string   nose;
string   ear;
};
class   pepole   :   protected   animo{
protected:
string   name;
};
class   boy   :   public   pepole{
public:
void   set(){
age=890;
nose= "yese ";
cout < <age < <endl;
}
};
void   main(){
boy   *p=new   boy;
cout < <p-> age < <endl;
p-> set();
}
为什么在倒数第三行中用指针P访问基类age的时候会编译失败:
error   C2248:   “animo::age”:   无法访问   protected   成员(在“animo”类中声明)


请高手帮忙解决下,谢了。。。。。。。。。。。

------解决方案--------------------
class pepole : protected animo
这样在pepole类里,age的访问权限是private,即不能被子类访问
------解决方案--------------------
protected第一次被继承为ptotected,继承类可 访问
再次被继承为private不能被继承类访问

------解决方案--------------------
class animo{
protected:
int age;//这里已经注定age不可在类外访问了.但派生类的成员函数可以访问它.
public:
string nose;
string ear;
};
------解决方案--------------------
age 为 protected 属性成员,
仅在类域内部或者是其 public/protected 派生类的类域内可以被访问。

所以,
main内是不可访问的。。。。
------解决方案--------------------
把类换成结构体就行了