我目前正在开发一个通用的C ++函数,用于从数据库读取数据,然后将其打印到XML格式的文件中。每个数据库文件都有一个结构,其中包含有关数据库文件的基本信息(它是一个专有数据库)。
麻烦的是,虽然它对于大多数事情来说是完全通用的,但是有一个使用某种联合的数据库文件,其中列确定其余列的内容。这些是为了获得自己的缩进级别,就像主要记录中的孩子一样。第二个问题是,最终可能会出现一个包含未知数量的子缩进的文件。
我需要做些什么来使这个函数尽可能通用,以避免必须为该特定文件放入if语句?我有一种方法(可能)使它适用于一个孩子,但是当它遇到多个孩子缩进时,事情变得有点疯狂和朦胧。
答案 0 :(得分:1)
不是传递structure with basic information
,而是传递一个或多个函数指针(即"回调"),它们负责解析各个部分。这样,您的泛型函数实现了顶层算法,但较低级别的细节由调用者提供的函数处理。