次の非常に省略されたクラスでは、一連のデータベース レコードを反復処理するメソッド (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 Cannot convert '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 を複数回呼び出し、さまざまな関数を渡すことができるようにしました。