Próbuję utworzyć metodę klasy, która zwróci std :: vector, i jestem trochę zdezorientowany co do najlepszego sposobu na zrobienie tego.Zwracanie std :: vector - right approach
Podejście Użyłem jest zdefiniować w następujący sposób:
std::vector<double>* GetBins(void);
iw sposobie przydzielania nowego std :: vector, którą zapełnić danymi. Wracam do tego wskaźnika.
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 to iterator zdefiniowany przez klasę).
W moim main.cpp, robiłem co następuje:
std::vector<double>* myBins;
myBins = myFreq3->GetBins();
delete myBins;
wiem z tym podejściem, mam zamiar dostać dangling wskaźnik chyba usunę wskaźnik w kodzie main.cpp , więc jest już trochę "niebezpieczny". Jaki jest najlepszy sposób na zwrócenie nowego wektora std :: vector z metody klasy?
Dzięki chłopaki Pete
Dlaczego musisz zwrócić wszystko? Stwórz interfejs 'BinsProcessor' i zapytaj' Częstotliwość' o przetwarzanie pojemników za pomocą 'CustomBinsProcessor'. –