“没有匹配函数”初始化类

时间:2013-12-03 17:31:49

标签: c++

我收到了那条消息

  

没有匹配函数来调用'main():: MySeqInFileEnumerator :: MySeqInFileEnumerator(const char [10])'

当我做我的字符串匹配job.I必须覆盖现有代码的方法。我必须打开一个输入文本,并从中创建一个抽象文件,然后我必须做一个乐观的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;
}

2 个答案:

答案 0 :(得分:1)

如错误消息所示,该类没有构造函数接受字符串;但你尝试使用

MySeqInFileEnumerator t("input.txt");

也许基类有一个合适的构造函数?在这种情况下,您需要转发参数:

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

答案 1 :(得分:0)

您忘了添加合适的构造函数。像这样:

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

// ...
};

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