在以下极其缩写的类中,我想在基类中定义一个方法(ProcessLines),该方法将遍历一组数据库记录,将每条记录作为参数传递给仅在子类中定义的函数。显然 Base 是一个永远不会自行实例化的虚拟类。
Class Base {
public:
typedef ProcLineFunc( Long *Line );
void ProcessLines( ProcLineFunc pf);
}
Class Child{
void DoWork( Long *Line) { //do something}
}
我不确定如何实现这一点。如果我在子项中重新声明 ProcessLines 并仅调用父方法,则会收到与在创建子项的代码中调用 ProcessLines 相同的错误消息。
Child c(//something);
c.ProcessLines(c.DoWork);
给我一个编译器消息:
[BCC32 错误] main.cpp(67): E2034 无法转换 'bool (* (_closure )(long *))(long )' >to 'int ( )(long *)'
完整的解析器上下文
main.cpp(56) : class Add2Chan
main.cpp(78): 决定实例化: bool Add2Chan::ProcessByLines()
--- 重置解析器上下文以进行实例化...
main.cpp(67): 解析: bool Add2Chan::ProcessByLines()
我对 c++ 还很陌生,E2034 错误消息吓到我了。
请帮忙。我使用了 typedef,这样我就可以在我的子类中多次调用 ProcessLines,并在执行过程中传递不同的函数。