【发布时间】:2023-03-18 20:23:01
【问题描述】:
所以,我创建了一个名为“Grid”的类。我也有一门课叫做'Field'。 Field-class 有 4 个 Grid 类型的变量,它们都在构造函数中设置。除了,它们不是……或者至少编译器不这么认为。
我真的不明白为什么,我将所有变量设置为一个新实例。
当我将鼠标悬停在红色下划线(在构造函数下)时,它会说: "'Field' 的构造函数必须显式初始化没有默认构造函数的成员 'b_attack'"
代码:
class Grid{
friend class Field;
private:
unsigned int xSize;
unsigned int ySize;
bool *ptrfield;
Grid(unsigned int xSize, unsigned int ySize){
this->xSize = xSize;
this->ySize = ySize;
ptrfield = new bool[xSize*ySize];
}
};
class Field{
private:
Grid a_own;
Grid a_attack;
Grid b_own;
Grid b_attack;
public:
Field(unsigned int xSize, unsigned int ySize){
a_own = Grid(xSize, ySize);
a_attack = Grid(xSize, ySize);
b_own = Grid(xSize, ySize);
b_attack = Grid(xSize, ySize);
}
void print(){
std::cout << "aHELLO" << std::flush;
std::cout << a_own.xSize << std::flush;
}
};
【问题讨论】:
-
考虑使用
std::vector进行阵列存储。你在这里使用new[],但没有对应的delete[],所以这会泄漏内存,这是一个不好的习惯。std::vector会为您解决这些问题。 -
@tadman 是的,我想在编译完这个东西后这样做... //TODO
标签: c++ class variables constructor initialization