我有一个类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];
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
SnakesAndLaddersBoard.cpp | 13 |错误:从'SnakesAndLaddersSpace*'无效转换为'Space*'[-fpermissive] |
那是因为SnakesAndLaddersSpace**不兼容Space**,由于间接性太高,它们只是无关.原因是,您仍然可以指定指向要键入SnakesAndLaddersSpace的指针的指针Space,但是您不能将指针指向SnakesAndLaddersSpace指向指针的指针Space.
bo = new Space*[height]; // look here!!!
for(int i = 0; i < height; i++)
{
bo[i] = new SnakesAndLaddersSpace[width];
}
Run Code Online (Sandbox Code Playgroud)