【发布时间】:2011-10-14 17:06:04
【问题描述】:
有这门课:
class Automat
{
private:
// some members ...
public:
Automat();
~Automat();
void addQ(string& newQ) ;
void addCharacter(char& newChar) ;
void addLamda(Lamda& newLamda) ;
void setStartSituation(string& startQ) ;
void addAccQ(string& newQ) ;
bool checkWord(string& wordToCheck) ;
friend istream& operator >> (istream &isInput, Automat &newAutomat);
string& getSituation(string& startSituation) ;
};
还有一个名为Menu 的类,它具有以下方法:
void Menu::handleStringSituations(string &stringOfSituation , Automat* autoToHandle ,void (Automat::*methodToDo) () )
{
// some code ...
(*autoToHandle).*methodToDo() ;
}
(*autoToHandle).*methodToDo() ; 行出现错误。
如您所见,我试图将 Automat 类中的任何方法作为参数传递给 handleStringSituations 方法,但没有成功。
【问题讨论】:
-
我可能会建议重新设计。如果您描述了您的目标(而不是您实现目标的尝试),我们可以看看。有些人可能会建议
std::function,但我认为你可能没有以正确的方式解决这个问题。