我正在使用一个解析数据的模板类。每行数据都需要调用两个函数之一来处理数据。这个决定是在构造解析器时确定的,并且取决于传递给构造函数的变量。我认为为此使用函数指针会很有用,这样我就可以在构造函数中使用一个 if 语句并将正确的函数分配给将在程序主体中使用的函数指针。我遇到了一个我无法弄清楚的错误,我很好奇我是否在这种情况下正确使用了函数指针。
template<class T1, class T2>
class MyClass{
protected:
void (*pDoSomething)(std::string,std::string,std::string);
void functionOne(std::string,std::string,std::string);
void functionTwo(std::string,std::string,std::string);
public:
MyClass(bool option);
void parseData();
};
templace<class T1, class T2>
MyClass<T1,T2,>::MyClass(bool option){
if (option) pDoSomething = &functionOne;
else pDoSomething = &functionTwo;
}
template<class T1, class T2>
void MyClass<T1,T2>::parseData(){
/* . . . */
while(dataToParse){
*pDoSomething(string1, string2, string3);
}
/* . . . */
}