创建对象数组,没有匹配的构造函数初始化错误
Posted
技术标签:
【中文标题】创建对象数组,没有匹配的构造函数初始化错误【英文标题】:Create an array of objects, Error of no matching constructor initialization 【发布时间】:2016-11-11 20:54:51 【问题描述】:我正在尝试创建对象 BuyOrder 的数组
BuyOrder buy[10];
为什么我收到错误消息“BuyOrder[10] 没有匹配的构造函数初始化”?
下面是 BuyOrder 构造函数。我是否必须创建另一个默认构造函数?
BuyOrder::BuyOrder(double price, int quantity, Stock &s)
:buyPrice price ,
buyQuantityquantity,
buyStock s
【问题讨论】:
这不是默认构造函数。默认构造函数不带参数。 您可以尝试创建一个Minimal, Complete, and Verifiable Example 并展示给我们吗? @MichaelAlbers 那么你的意思是我只能声明一个对象数组,其中对象具有默认构造函数吗? @JoviZhihaoZhou,不,你也可以对其进行聚合初始化。但这仅适用于非常小的数组。 @StoryTeller 在这种情况下,如果我做 BuyOrder buy[10];没有显示匹配的构造函数初始化。你能建议如何编辑吗? 【参考方案1】:就像我在评论中所说,您 can 为小型数组进行聚合初始化。
#include <array>
struct example
example(int, double)
example(example const&) = delete;
;
int main()
example arr1[2]
1, 3.4,
2, 5.6
;
std::array<example, 2> arr2
1, 3.4,
2, 5.6
;
return 0;
【讨论】:
以上是关于创建对象数组,没有匹配的构造函数初始化错误的主要内容,如果未能解决你的问题,请参考以下文章