求教,子类中定义父类的一个对象,该怎么解决
求教,子类中定义父类的一个对象
#include<iostream.h>
class A
{
protected:
A(){cout<<"A Constructor"<<endl;}; //父类的构造函数为保护类型
};
class B:public A
{
public:
void show();
};
void B::show()
{
A aa; //编译出错问题就在这里
}
void main()
{
B b;
}
//问题、父类A的构造函数是protected类型的,子类B照理应该可以访问,为什么出错了,如果改成public就可以编译了
------解决方案--------------------
+1
------解决方案--------------------
说个更简单点的例子:
class A
{
public:
A() {}
}
class B : public A
{
public:
B() {}
}
// 1
A *a = new A();
B *b = (A*)a; // 这样是错的, 这个a跟B有毛关系。。。
// 2
A *a = new B();
B *b = (A*)a; // 这样才是对的吧, 这个a才是B的父类
#include<iostream.h>
class A
{
protected:
A(){cout<<"A Constructor"<<endl;}; //父类的构造函数为保护类型
};
class B:public A
{
public:
void show();
};
void B::show()
{
A aa; //编译出错问题就在这里
}
void main()
{
B b;
}
//问题、父类A的构造函数是protected类型的,子类B照理应该可以访问,为什么出错了,如果改成public就可以编译了
------解决方案--------------------
+1
------解决方案--------------------
说个更简单点的例子:
class A
{
public:
A() {}
}
class B : public A
{
public:
B() {}
}
// 1
A *a = new A();
B *b = (A*)a; // 这样是错的, 这个a跟B有毛关系。。。
// 2
A *a = new B();
B *b = (A*)a; // 这样才是对的吧, 这个a才是B的父类