我有一个类,它有一个struct作为成员,另一个类B继承了A类,B类结构继承了A类的结构。
class A
{
public:
struct st
{
int x;
int y;
};
};
class B : public A
{
public:
struct st : A::st
{
int z;
};
};
以下代码给我错误:做这件事的方法是什么
B::st* obj = NULL;
obj = new A::st [10];
答案 0 :(得分:2)
您尝试的是错误的,因为B::st
是A::st
的子类型。因此,指向A::st
的指针无法自动转换为B::st
类型的指针。
出于同样的原因,您无法使用:
B* bPtr = new A;
你可以反过来做。
A::st* obj = NULL;
obj = new B::st; // Don't use the array new. That is going to be problematic.