gpt4 book ai didi

c++ - 创建结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:08 25 4
gpt4 key购买 nike

我正在尝试创建一个结构数组,但出现错误no matching function for call to 'Cell::Cell()'

Cell 是我的结构的名称。这是我的一些代码:

struct Cell{
int number;

Cell(int n){
number = n;
}
};

class MyClass{
public:
int nCells;

void inject(){
std::cout << "Enter number:";
string in;
std::cin >> in;
int amount = in.size()/3;

Cell cells [amount]; // <-- error

int index = 0;
int t = in.size();
while (t >= 3){
cells[index] = new Cell(atoi(in.substr(t-3,3).c_str());
t -= 3;
index++;
}
}

MyClass(int n){
nCells = n;
}
};

Cell cells [amount]; 给我错误。我是新来的类,但我知道如何制作基本类型的数组。例如,int cells [amount]; 会起作用。

但是我应该如何创建 Cell 类型的数组?

最佳答案

Cell 没有默认构造函数(一旦您指定另一个构造函数,编译器将不再创建默认构造函数)。然而,定义 Cell cells[amount] 将自动默认初始化每个元素。

我认为在这种特殊情况下最好的方法就是简单地实现一个默认构造函数:

struct Cell{
int number;

Cell() : number(0)
{
}

Cell(int n) : number(n)
{
}
};

另请注意,由于 amount 在编译时未知,Cell cells[amount] 基本上是非法的。但是,某些编译器具有允许这样做的扩展。但是如果你堆分配它会更好:

Cell* cells = new Cell[amount];

但是不要忘记销毁它。

关于c++ - 创建结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21436224/

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