日付と価格のペアを格納する次のクラスがあります。
#include <vector>
#include <utility>
#include "boost/date_time/gregorian/gregorian.hpp"
using std::vector;
using std::pair;
using boost::gregorian::date;
class A {
private:
vector<pair<date*, float> > prices;
public:
A(pair<date*, float> p[], int length) : prices(p, p + length) { }
};
このクラスのオブジェクトが作成され、次の関数でデータが入力されます。
A loadData() {
// create price array
pair<date*, float> *prices = new pair<date*, float>[10];
// fill array with data (normally read from a file)
for (int i = 0; i < 10; ++i) {
prices[i].first = new date(2012, 4, 19);
prices[i].second = 100;
}
// create the object using the price array
A result(prices, 10);
// delete the price array (its contents have been moved to result's vector)
delete[] prices;
return result;
}
この設定では、loadData 関数で各日付オブジェクトを作成するときに割り当てられたメモリを解放するために、どこで delete を呼び出すでしょうか? 私の最初の推測は、A のデコンストラクターの日付を削除することでしたが、コンストラクターに渡された日付がクラス A 以外の場所で使用される場合はどうなるでしょうか?
これについての助けは大歓迎です。