我有一个类Board
,它包含一个指针指针数组,称为Space** bo
,每个指针都指向Space
类的一个实例。我有一个名为SnakesAndLaddersSpace
的派生类,它继承自Space
,SnakesAndLaddersBoard
继承自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] |
答案 0 :(得分: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];
}
答案 1 :(得分:-1)
没有意义......如果你要创建一个新变量,那么你不应该调用构造函数吗? bo [i] = new SnakesAndLaddersSpace(width); ..?