Generally, TagLib leaves the Private classes to delete their members.
class File::FilePrivate
{
public:
- FilePrivate(IOStream *stream, bool owner);
+ FilePrivate(IOStream *stream, bool owner) :
+ stream(stream),
+ streamOwner(owner),
+ valid(true) {}
+
+ ~FilePrivate()
+ {
+ if(streamOwner)
+ delete stream;
+ }
IOStream *stream;
bool streamOwner;
bool valid;
};
-File::FilePrivate::FilePrivate(IOStream *stream, bool owner) :
- stream(stream),
- streamOwner(owner),
- valid(true)
-{
-}
-
////////////////////////////////////////////////////////////////////////////////
// public members
////////////////////////////////////////////////////////////////////////////////
File::~File()
{
- if(d->stream && d->streamOwner)
- delete d->stream;
delete d;
}