Woker* newSpace = new Woker[newSize];报错worker不存在默认构造函数,怎么改进
时间: 2024-02-12 07:07:29 浏览: 74
如果Woker类没有默认构造函数,那么在使用new操作符动态分配数组时会出现错误。为了解决这个问题,你可以在new操作符后面使用括号并提供适当的构造函数参数来初始化每个数组元素。
例如,如果Woker类有一个带有参数的构造函数,可以在new操作符后面使用括号来提供构造函数参数,如下所示:
```c++
Woker* newSpace = new Woker[newSize]{ Woker(1, "Woker1"), Woker(2, "Woker2"), ... };
```
这里可以使用花括号列表初始化语法来提供数组元素的初始化值,每个值对应一个构造函数参数。如果Woker类的构造函数需要更多参数,只需在列表中添加更多值即可。
另一种解决方案是在Woker类中添加一个默认构造函数。这个构造函数可以不需要任何参数,可以只是设置一些默认值。例如:
```c++
class Woker {
public:
Woker() : id(0), name("") {} // 默认构造函数
Woker(int id_, std::string name_) : id(id_), name(name_) {}
private:
int id;
std::string name;
};
```
这样,就可以使用new操作符动态分配一个Woker类型的数组,而不需要提供任何参数:
```c++
Woker* newSpace = new Woker[newSize]; // 使用默认构造函数初始化数组
```
当然,在这种情况下,需要确保默认构造函数不会引入其他问题。
阅读全文