このコードがあるとします...
class GraphFactory : public QObject
{
private:
QMap<QString, IGraphCreator*> factory_;
public:
virtual ~GraphFactory();
};
GraphFactory::~GraphFactory()
{
// Free up the graph creators
QMap<QString, IGraphCreator*>::iterator itr;
for (itr = factory_.begin(); itr != factory_.end(); itr++)
{
IGraphCreator * creator = itr.value();
delete creator;
creator = NULL;
}
}
QMap factory_ はいつ破棄されますか? デストラクタへの呼び出し前、またはデストラクタ中? (GraphFactory のインスタンスが範囲外になると、デストラクタが呼び出されることは理解しています。しかし、ポインタ以外のメンバーはいつ破棄されますか?)
編集:デストラクタに到達すると、factory_ マップの無効な値が取得されます。ブレーク ポイントは、値が QMap 内に格納されている値と改ざんされていないことを示しています。