是否可以将基类的结构分配给衍生类的结构

时间:2017-03-30 07:19:52

标签: c++ struct instantiation

我有一个类,它有一个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]; 

1 个答案:

答案 0 :(得分:2)

您尝试的是错误的,因为B::stA::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.