1

我有一个类Board,它包含一个指针数组,称为Space** bo,每个指针都指向该类的一个实例Space。我有一个派生类SnakesAndLaddersSpace,它继承自SpaceSnakesAndLaddersBoard继承自Board

本质上,在我的SnakesAndLaddersBoard班级中,我想将Space** bo它继承的 更改为 ,SnakesAndLaddersSpace** bo我将如何处理?

这就是我在SnakesAndLaddersBoard课堂上所做的

SnakesAndLaddersBoard::Board::Board(int w, int h)
{ 
    width=w;
    height=h;//set up the size of the board

    bo = new SnakesAndLaddersSpace*[height];  // <<-- error
    for(int i = 0; i < height; i++)
    {
        bo[i] = new SnakesAndLaddersSpace[width]; 
    }
}

这是我得到的错误

SnakesAndLaddersBoard.cpp|13|错误:从 'SnakesAndLaddersSpace* ' 到 'Space *' 的无效转换 [-fpermissive]|

4

2 回答 2

6

那是因为SnakesAndLaddersSpace**与 不兼容Space**,它们只是由于间接级别太高而无关。当然,您仍然可以将指针分配给指向类型SnakesAndLaddersSpace的指针Space,但不能将指向指针的指针分配给指向指针SnakesAndLaddersSpace的指针Space

bo = new Space*[height]; // look here!!!
for(int i = 0; i < height; i++)
{
    bo[i] = new SnakesAndLaddersSpace[width];
}
于 2013-04-27T14:49:58.580 回答
-1

这没有意义......如果你正在创建一个新变量,那么你不应该调用构造函数吗?bo[i]= new SnakesAndLaddersSpace(width); ..?

于 2013-04-27T14:55:04.597 回答