gpt4 book ai didi

c++ - 从另一个类 C++ 的构造函数初始化二维数组

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:18 25 4
gpt4 key购买 nike

我试图在一个类中创建一个二维对象数组,然后使用另一个类的构造函数初始化每个单元格,但我遇到了一个错误并且不知道如何修复它。以下是类(class):

平铺:

class Tile
{
public:
enum Type
{
Sea, Ship, Hit, Miss
};
Tile() {}
Tile (int X, int Y, Type c)
{
this->X = X;
this->Y = Y;
this->cell = cell;
}
void setType(Type c)
{
this->cell = c;
}
Type getType()
{
return cell;
}
void draw(bool hidden)
{
if (hidden == false)
switch (this->getType())
{
case Sea:
cout<<" ~ ";
break;

case Ship:
cout<<" s ";
break;

case Hit:
cout<<" X ";
break;

case Miss:
cout<<" o ";
break;

}
else
switch (this->getType())
{
case Hit:
cout<<" X ";
break;

case Miss:
cout<<" o ";
break;

default:
cout<<" ~ ";
break;
}
}
private:
Type cell;
int X,Y;
};

类(class)委员会:

class Board
{
private:
Tile B[row][col];
int R, C;
public:
Board (Tile B[][col])
{
for (R = 0; R < row; R++)
for (C = 0; C < col; C++)
B[R][C] = new Tile(R, C, Tile::Sea);
}
};

我得到的错误是在 Board 类的构造函数中。我相信可以使用 vector 来完成,但我不得不使用数组。

最佳答案

这里的错误是 new Tile(R, C, Tile::Sea) 返回一个指针而不是实例本身:

//B[R][C] = new Tile(R, C, Tile::Sea);

Tile * tile = new Tile(R, C, Tile::Sea);
B[R][C] = *tile;

当然你也可以像@CoryKramer 建议的那样简单地做:

B[R][C] = Tile(R, C, Tile::Sea);

关于c++ - 从另一个类 C++ 的构造函数初始化二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com