c++ - 从另一个类 C++ 的构造函数初始化二维数组
问题描述
我正在尝试在一个类中创建一个二维对象数组,然后使用另一个类的构造函数初始化每个单元格,但是我遇到了一个错误并且不知道如何修复它。以下是课程:
瓦:
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 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 类的构造函数中。我相信可以使用向量来完成,但我不得不使用数组。
解决方案
这里的错误是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);
推荐阅读
- r - stepAIC 接受哪些参数?
- javascript - 如何将自定义脚本添加到 React 应用程序组件中?
- python - 日期与时间图上数据的颜色映射
- node.js - 如何让我的应用程序使用我的新 API 密钥?
- python - 使用 pandas 数据框和 numpy 进行多项式拟合
- php - PHP - DOMDocument 抓取 div 不删除图像
- c# - 在我的表单确认对话框后自定义导航表单
- c - 在 c 中处理的信号很少
- azure-application-gateway - Azure 应用程序网关出口 IP
- javascript - ParseFloat 返回字符串而不是 Javascript 中的数字