C++ "No matching function for call"错误

C++ "No matching function for call" error

本文关键字:call 错误 for matching No C++ function      更新时间:2023-10-16

我正在使用MinGW编译器。我不明白为什么我会收到错误。

错误:

Multiple markers at this line
- candidate is:
- no matching function for call to 'InsultGenerator::InsultGenerator()'
- Line breakpoint: Insultgenerator_0hl14.cpp [line: 22]

这是 cpp 文件:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "Insultgenerator_0hl14.h"
using namespace std;
FileException::FileException(const string& m) : message(m){}
string& FileException::what(){ return message;}
NumInsultsOutOfBounds::NumInsultsOutOfBounds(const string& m) : message(m){}
string& NumInsultsOutOfBounds::what(){ return message;}
InsultGenerator::InsultGenerator(const InsultGenerator& ) {}
void InsultGenerator::initialize() const{
    int cols(0);
    InsultGenerator t1;
    string insults;
    string filename("InsultsSource.txt");
    ifstream file(filename.c_str());
    if(file.fail()){
        throw FileException("File not read.");
    }
     while(file >> insults){
         if(cols==0){
            t1.colA.push_back(insults);
            cols++;
         } else if(cols==1){
             t1.colB.push_back(insults);
             cols++;
         }else{
             t1.colC.push_back(insults);
             cols= cols -2;
         }

     }
for (int i=0;i<50;i++){
    cout << i << t1.colA[i];
}
}

这是头文件:

#ifndef INSULTGENERATOR_0HL14_H_
#define INSULTGENERATOR_0HL14_H_
#include <string>
#include <vector>
using namespace std;
class InsultGenerator{
public:
//  InsultGenerator(vector<string>);
    InsultGenerator(const InsultGenerator &);
    void initialize() const;
    string talkToMe() const;
    vector<string> generate(const int) const;
    int generateAndSave (const string, const int) const;
private:
    vector<string> colA;
    vector<string> colB;
    vector<string> colC;
};
class FileException{
public:
    FileException(const string&);
    string& what();
private:
    string message;
};
class NumInsultsOutOfBounds{
public:
    NumInsultsOutOfBounds(const string &);
    string& what();
private:
    string message;
};
#endif

你有一个构造函数用于InsultGeneratorInsultGenerator(const InsultGenerator &);,但它有参数。您需要一个没有参数的构造函数,以便语句InsultGenerator t1;可以正确调用相应的构造函数。

因为您没有InsultGenerator对象的构造器。在头文件中,添加InsultGenerator();,在 CPP 文件中,添加

InsultGenerator::InsultGenerator() { }