创建对象数组,没有匹配的构造函数初始化错误

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;

【讨论】:

以上是关于创建对象数组,没有匹配的构造函数初始化错误的主要内容,如果未能解决你的问题,请参考以下文章

C++ 错误:没有用于初始化的匹配构造函数

没有默认构造函数的对象数组初始化

指向对象和继承对象的指针数组

在c++中如何调用数组对象的构造函数

JAVA中怎么初始化对象数组?

在构造函数初始化器列表中初始化函数指针数组 - 错误