【发布时间】:2014-11-30 23:27:36
【问题描述】:
我正在制作一个垄断游戏,我有两个向量数组作为我的二维字符数组的坐标。下面是我的 board.h,其中数组保存在 board 类中
class Board {
...
Vector propList[40];
Vector coordList[40];
...
public:
...
};
我在尝试创建可执行文件时在 bash 中运行程序时遇到错误,如下所示(每个数组有 2 个相同的错误)
board.cc:15:8: error: constructor for 'Board' must explicitly initialize the member 'propList' which does not have a default constructor
Board::Board() {
^
./board.h:17:12: note: member is declared here
Vector propList[40];
我已经在我的板构造函数中初始化了所有 40 个元素,如下所示
propList[0] = Vector(-1, -1);
propList[1] = Vector(73, 51);
...
propList[39] = Vector(81, 46);
coordList[0] = Vector(81, 54);
coordList[1] = Vector(73, 54);
...
我也尝试了以下
Vector v = (-1, 1);
propList[0] = v;
...
并收到相同的错误。有谁知道发生了什么以及如何解决它?
编辑:我忘了添加我的矢量代码。我必须创建一个构造函数,因为我不能在我的计算机上使用 C++11 初始化。
vector.cc
#include "vector.h"
Vector::Vector(int x, int y) : x(x), y(y) {}
vector.h
struct Vector {
Vector(int x, int y);
int x;
int y;
};
【问题讨论】:
-
您的
Vector类需要将参数传递给构造函数。 -
错误消息中的“...which doesn't have a default constructor”部分是否不够清楚?
Vector没有默认构造函数。它需要一个,或者您需要一种不同的初始化方法。 -
@WhozCraig 抱歉,我没有添加我的矢量代码。我需要创建一个构造函数,因为我不能使用 c++11 初始化。
标签: c++ arrays constructor