辅助类 - 私有嵌套类与类声明&仅在实现文件中定义

时间:2011-04-15 23:09:34

标签: c++ nested-class

我正在编写一个基本的SQLite包装器。在这样做时,我注意到我经常手动打开和关闭SQLite数据库,使用SQLite的API创建和销毁SQLite编译的语句结构。手动创建/销毁这些资源。当一个函数在发生错误时必须提前返回时,我正在学习它会变得有点混乱。

我想到更多C ++处理这个问题的方法是让堆栈中对象的生命周期管理这些RAII风格。这样每当我从函数返回时(由于错误而不是早期),这些清理任务将在堆栈展开时由析构函数处理。

我的问题是,对于这些辅助RAII类(例如SQLiteDBHandle,SQLiteStatementHandle),其使用与较大的SQLite包装类相关联,最好将它们声明为SQLite包装器中的私有嵌套类,或者简单地声明和放大;在SQLite包装器的实现文件中定义它们,没有标题&他们自己的实施文件?

我倾向于将它们作为独立类放在.cpp文件中。

宣称&是否有缺点?将它们隐藏在我丢失的较大包装器的.cpp文件中?

1 个答案:

答案 0 :(得分:2)

不,那很好。

如果某些类或函数仅用于一个.cpp文件,则在该文件中定义它们是有意义的。

另一方面,如果它们具有相当大的尺寸(无论这意味着什么),或者可以在其他地方使用,那么最好将它们放在单独的源文件中。但如果要求发生变化,这也可以在以后解决。