我正在重写一些代码以消除全局变量,并使类构造函数/析构函数处理一些第三方库资源的清理,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员。
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 指针。
它在单元测试框架中工作,所以我的问题基本上是,“这可以吗,便携且安全吗?”