我可以使用在初始化列表中初始化的C类成员,稍后在列表中吗?

我正在重写一些代码以消除全局变量并使类构造函数/析构函数句柄清理某些第三方库资源,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员.
class MyPodofodocument {
public:
    // generates pdf to stream
    MyPodofodocument(std::stringstream *pStringStream)
        : device(pStringStream),document(&device)
    {
    }
private:
    PodoFo::PdfOutputDevice device;
    PodoFo::PdfStreamedDocument document;
    PodoFo::PdfPainter painter;
};

使用这个类的代码不需要查看使用该库的所有细节,但是我隐藏它们的方式使它依赖于使用成员初始化其他成员,然后才能访问构造函数的实际代码块,在那里它有一个有效的this指针.

它适用于单元测试骨架,所以我的问题基本上是,“这样可以,便携且安全吗?”

解决方法

成员按照声明的顺序从上到下进行初始化
PodoFo::PdfOutputDevice device;
PodoFo::PdfStreamedDocument document;
PodoFo::PdfPainter painter;

所以使用device初始化文件是安全的.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...