8

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 を返す最良の方法は何ですか?

みんなありがとうピート

4

3 に答える 3