我正在制作一个拼写检查程序。
public:
SpellChecker(fstream& fileName)
:dic("wordEn.txt"),
fileToSpell(fileName),
appendbleChanges()
{
}
private:
Dictionary dic;//dictionary
fstream& fileToSpell;
stringMap appendbleChanges;//map that save changes to the words in the file
这是该类的简化版本。创建字典是昂贵的,我不希望客户端创建它,所以我让拼写检查器负责制作它。那么提供一个setFile()函数是合乎逻辑的,该函数使拼写检查器类可以处理新文件,而无需再次创建字典。
void SpellChecker::setFile(fstream& fileName)
{
appendbleChanges.clear();//clear the previous history
fileToSpell.open(fileName);//wrong!!
}
但是我找不到将fileName分配给fileToSpell的方法。赋值运算符被删除,我知道使用std :: move()但它不是我想要做的,如果客户端想要在拼写检查后对文件进行进一步更改会怎样?我可以提供一个getFile()函数,但是让客户端记住这个并不好......