c++ - 如果我想使用“new”来分配它的数组,我是否必须为我的类定义一个默认构造函数?
问题描述
假设我有一个 A 类:
class A{
public:
A(int const& someValue, std::string const& anotherOne);
private:
std::string m_string_member;
int m_int_member;
};
我想使用 new 分配这个类的数组:
A* myClassArray = new A[69];
我得到错误:No default constructor available
。我是否必须通过调用为要使用的每个类编写一个默认构造函数new
?
解决方案
简短的回答:是的。
长答案:让我们从这里的矩阵开始https://foonathan.net/images/special-member-functions.png。您提供了一个不是默认构造函数的构造函数(您的构造函数带有参数)。因此编译器不会自动为您生成默认构造函数。但是,在您的分配中,您要求编译器默认构造 69 个元素。编译器应该如何做到这一点?但是,解决这个问题相当容易。只需提供默认构造函数,或者更简单,使用= default
. 后者仅适用,因为您的所有成员都是默认可构造的。
推荐阅读
- minecraft-forge - 任何地方都有完整的Minecraft forge文档吗?
- python-3.x - Pandas 错误 TypeError: 一元操作数类型错误 ~: 'float'
- python - Python:根据条件将信息从一个数据帧提取到另一个数据帧(具有不同的长度)
- c# - 如何等待不希望返回的异步方法
- javascript - 从回调函数 NodeJS 访问变量
- ios - 视图控制器中的所有 IBOutlets 都是 nil
- django - 无法在餐厅或 RestrauntsAdmin 上查找“已下订单”
- python - Python / tkinter / classes - 对象没有属性'tk'
- r - 是否有一个 R 包可以从频率表中计算一阶转换矩阵?
- swift - SwiftUI:当列表状态的绑定发生变化时关闭视图