【发布时间】:2019-12-27 11:05:06
【问题描述】:
对于一个简单的国际象棋游戏,我想创建一个(国际象棋)棋子向量的二维向量。所以我的课看起来像
class board {
private:
int width, height; //dimensions
vector<vector<piece> > pieces2D;
public:
board(int w=8, int h=8)
{
width = w; height = h;
vector<vector<piece>> pieces2D(w, vector<piece>(h, 0));
}
piece 是一个抽象类,所以我不能使用数组。但我无法在构造函数中创建默认大小为 8x8 的pieces2D。缺什么?我也很欣赏存储 64 个(抽象)片段的其他解决方案。
【问题讨论】:
-
您可以改用
vector<vector<std::unique_ptr<piece>> > pieces2D;。 -
"abstract" 是 "cannot create instances of that class" 的同义词,因此您不能在仅向量指针(或引用)中拥有
piece实例 -
关于次要问题,在构造函数
vector<vector<piece>> pieces2D(w, vector<piece>(h, 0));中定义了一个 new 和 distinct 以及 local 变量,名为 @ 987654325@。它与同名的成员变量完全无关。我建议你花点时间研究一下构造函数初始化列表。 -
尽管语法相似,但 C++ 在基本方面与 Java 和 C# 非常不同。