"no matching function"初始化类

"no matching function" initializing class

本文关键字:初始化 matching no function      更新时间:2023-10-16

我收到了消息

调用"main()::MySeqInFileEnumerator::MySeqInFileEnumerator(const char[10])"时没有匹配的函数

当我做字符串匹配工作时。我必须方法覆盖现有代码。我必须打开一个输入文本,并从中创建一个抽象文件,然后我必须进行乐观的linsearch。

#include <iostream>
#include "linsearch.hpp"
#include "seqinfileenumerator.hpp"
using namespace std;
struct MyPair
{
    int azon;
    int osszeg;
    friend ifstream& operator>>(ifstream& f, MyPair& df);
};
ifstream& operator>>(ifstream& f, MyPair& df)
{
     f >> df.azon >> df.osszeg;
     return f;
}`enter code here`
int main()
{
    class MyLinSearch: public LinSearch <int, true>
    {
        bool Cond(const int& e) const
        {
            return e<=-100000;
        }
    };
    class MySeqInFileEnumerator: public SeqInFileEnumerator <MyPair>
    {

        void Next()
        {
            MyPair dx;
           f >> dx;
           df.azon=dx.azon;
           df.osszeg=dx.osszeg;
           while(dx.azon==df.azon)
           {
               dx.osszeg+=df.osszeg;
               f >> dx;
           }
        }
    };
    MyLinSearch pr;
    MySeqInFileEnumerator t("input.txt");
    pr.AddEnumerator(&t);
    pr.Run();
    if (pr.Found())
    {
    cout << "false " << endl;
         }
         else cout << "true" << endl;
    return 0;
}

正如错误消息所说,该类没有采用字符串的构造函数;但是你试着用

MySeqInFileEnumerator t("input.txt");

也许基类有一个合适的构造函数?在这种情况下,您需要提出以下论点:

explicit MySeqInFileEnumerator(char const * name) : 
    SeqInFileEnumerator<MyPair>(name)
{}

您忘记添加一个合适的构造函数。类似这样的东西:

class MySeqInFileEnumerator: public SeqInFileEnumerator<MyPair>
{
public:
    MySeqInFileEnumerator(char const * p) : SeqInFileEnumerator<MyPair>(p) { }
// ...
};

(这是假设你的基类有一个相应的构造函数。修改为taste.