Sagen, ich habe diese Klasse:const Methode in einer Klasse Rückkehr Vektor von Zeigern
#include <vector>
using namespace std;
class Bag
{
vector<int*> items;
public:
void addItem(int* i)
{
items.push_back(i);
}
const vector<int*> getItems() const
{
return items;
}
};
Das Problem ist, ich durch die Zeiger in Parameterpunkten wiesen Änderungen der Werte verhindern will. Aber mit dem von getItems
zurückkehrenden Vektor darf ich die angegebenen Werte ändern.
Jetzt, um das zu beheben, kann ich die Parameter-Elemente als deklarieren, aber dann kann ich auch die Werte in meiner Klasse nicht ändern. Gibt es eine andere Möglichkeit, die Werte zu schützen, aber in den Elementdeklarationen immer noch nicht const zu verwenden?
'std :: Vektor getItems() const {return std :: Vektor (items.begin(), items.end()); } ' –
@KerrekSB sollte dies eine Antwort sein. –
@KerrekSB Danke für die Antwort, aber ist das der einzige Weg? Ich habe das Gefühl, eine Kopie zu erstellen ist ineffizient auch, wenn ich eine Kopie erstellen muss ich nach Wert zurückgeben, richtig? auch, was sagst du zur ersten Frage? – Adam