std :: vectorを返すクラスメソッドを作成しようとしていますが、これを行うための最善の方法について少し混乱しています。 std :: vector - rightアプローチを返す
std::vector<double>* GetBins(void);
及び方法で
は、私がデータでいっぱいに新しいのstd ::ベクトルを、割り当て:私が使用したアプローチは、次のメソッドを定義することです。私はこれにポインタを返しています。
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を返す最良の方法は何ですか?
おかげでみんな ピート
なぜ何かを返す必要がありますか? 'BinsProcessor'インターフェースを作成し、あなたの' CustomBinsProcessor'でビンを処理するために 'Frequency'を尋ねます。 –