我收到了那条消息
没有匹配函数来调用'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;
}
答案 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) { }
// ...
};
(这假设你的基类有一个相应的构造函数。修改为品味。