首页 > 解决方案 > 使用头文件在c ++中调用没有匹配的函数

问题描述

我的程序一直在这部分发送错误消息:

#include "StockListType.h"

int main()
{
int menuPromptOption;
double gainLossList[5];
StockListType stockList [5]; //error part
stockType A,B,C,D,E;
}

这是我用于主要的头文件

class StockListType : public listType<stockType>
{
public:
    StockListType (int size);
    void sortArrayByGain();
    void sortArrayByGain(double arrayList []);
    void printByGain();

    ~StockListType();
    }

这是我不断收到的错误消息。

error: no matching function for call StockListType::StockListType()

标签: c++class

解决方案


您的以下行main

StockListType stockList [5];

指示编译器使用每个对象的该类的默认构造函数创建一个由 5 个StockListType对象组成的数组。

但是,由于您在类中明确定义了一个非默认构造函数,因此:

public:
    StockListType (int size);

那么编译器将不会生成默认构造函数(即不带参数的构造函数)。

要解决此问题,您需要添加显式默认构造函数:

    StockListType ();

当然,在代码的其他地方提供实际定义(或 = default在声明中添加)。该默认构造函数的确切作用取决于您,但是,如果它与另一个(您已经拥有)大致相同,那么您可以通过为size参数提供默认值来“合并”两者:

    StockListType (int size = -1); // Default value for "size" allows use as a default c'tor 

随时要求进一步澄清和/或解释。


推荐阅读