Я пытаюсь создать метод класса, который вернет std :: vector, и я немного смущен о наилучшем способе сделать это.Возврат std :: vector - правильный подход
подход я использовал, чтобы определить следующий метод:
std::vector<double>* GetBins(void);
и в методе выделения нового зЬй :: вектор, который я заполняю данными. Я возвращаю указатель на это, т.е.
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' и попросите' Frequency' обработать бункеры с помощью 'CustomBinsProcessor'. –