std::vector を返すクラス メソッドを作成しようとしていますが、これを行う最善の方法について少し混乱しています。
私が使用したアプローチは、次のメソッドを定義することです。
std::vector<double>* GetBins(void);
メソッドで、新しい std::vector を割り当てます。これにデータを入力します。これへのポインタを返しています。
std::vector<double>* Frequency::GetBins(void) {
std::vector<double> *rtnVec = new std::vector<double>();
for (_itMap = _mapFreq.begin(); _itMap != _mapFreq.end(); _itMap++ ) {
rtnVec->push_back((*_itMap).first);
}
return rtnVec;
}
(_itMap はクラス定義の反復子です)。
私の main.cpp では、次のことを行いました。
std::vector<double>* myBins;
myBins = myFreq3->GetBins();
delete myBins;
このアプローチでは、main.cpp コードでポインターを削除しない限り、ダングリング ポインターを取得することがわかっているため、すでに少し「危険」です。クラスメソッドから新しい std::vector を返す最良の方法は何ですか?
みんなありがとうピート