抽象类的2D数组?

时间:2012-03-11 22:37:14

标签: c++ multidimensional-array abstract-class

我在使用抽象数组时遇到了困难。在我目前的情况下,我想要一个名为Base的抽象类的2D数组。所以我在名为Base的类中创建了一个指向Container的2D数组的指针。如何访问阵列内的项目?此外,有人可以确认我正在删除我的阵列吗?在此先感谢您的帮助!

class Base
{
public:
    virtual void abstract() = 0;
};

//----------------------------------

class Derived : public Base
{
public:
    virtual void abstract();
};

void Derived::abstract()
{
    // empty
}

//----------------------------------

class Container
{
public: 
    Board();
    virtual ~Board();
    Base* bases[8][8];
};

// Constructor
Container::Container()
{
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            bases[i][j] = new Derived();
}

// Destructor
Container::~Container()
{
    for (int i = 0; i < 8; i++)
        delete [] bases[i];
    delete [] bases;
}

//----------------------------------

int main()
{
    Container container;
}

1 个答案:

答案 0 :(得分:2)

此处delete[]没有数组。您没有new[]任何数组,为什么要delete[]他们?

您确实需要删除每个单独的元素,这与delete[]数组不同:

for (int i = 0; i < 8; i++)
    for (int j = 0; j < 8; j++)
        delete bases[i][j];

并确保您的Base有一个虚拟析构函数!


bases[8][8] = new Derived();

糟糕!数组索引最多只能达到7!我怀疑你打算写bases[i][j] = new Derived()