V S*_*ebi 0 c++ boolean compiler-errors function
所以我有一个抽象超类 ReadWords,和 3 个子类,FirstFilter、SecondFilter 和 ThirdFilter。
Readwords.h:
#ifndef _READWORDS_H
#define _READWORDS_H
using namespace std;
#include <string>
#include <fstream>
#include <iostream>
#include <cstdlib>
class ReadWords
{ public:
ReadWords(char *filename);
void close();
string getNextWord();
bool isNextWord();
virtual bool filter(string word)=0;
string getNextFilteredWord();
private:
ifstream wordfile;
bool eoffound;
string nextword;
string fix(string word);
};
#endif
Run Code Online (Sandbox Code Playgroud)
第一个过滤器.h:
#ifndef _FIRSTFILTER_H
#define _FIRSTFILTER_H
using namespace std;
#include <string>
#include <fstream>
#include <iostream>
#include "ReadWords.h"
class FirstFilter: public ReadWords
{ public:
FirstFilter(char *filename);
virtual bool filter(string word)
{
for(int i=0; i<word.length(); i++){
if (word[i]>='A'&&word[i]<='Z') return true;
}
return false;
}
};
#endif
Run Code Online (Sandbox Code Playgroud)
FirstFilter.cpp:
using namespace std;
#include "FirstFilter.h"
FirstFilter::FirstFilter(char *filename)
:ReadWords(filename)
{
}
Run Code Online (Sandbox Code Playgroud)
在主函数中,我创建了 FirstFilter、SecondFilter 和 ThirdFilter 类型的 3 个对象,我有类似的东西:
FirstFilter f1(file);
while(f1.isNextWord){
//etc
}
Run Code Online (Sandbox Code Playgroud)
我收到所有 3 个对象的此错误:
error: cannot convert 'ReadWords::isNextWord' from type 'bool (ReadWords::)()'
to type 'bool'|
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?告诉我你是否也需要 ReadWords.cpp,我没有放它,因为它有点大。
代替
while(f1.isNextWord){
Run Code Online (Sandbox Code Playgroud)
其中 isNextWord 用作函数指针
写
while(f1.isNextWord() ){
Run Code Online (Sandbox Code Playgroud)
其中 isNextWord 用作函数调用
| 归档时间: |
|
| 查看次数: |
7764 次 |
| 最近记录: |