Dire che ho questa classe:metodo const in una classe di ritorno vettore di puntatori
#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;
}
};
Il problema è che voglio evitare modifiche dei valori puntato dal puntatori in voci dei parametri. Ma usando il vettore di ritorno da getItems
mi è permesso modificare i valori puntati.
Ora, per risolvere il problema posso dichiarare le voci parametro come vector<const int*>
ma non posso modificare i valori nella mia classe. Esiste un altro modo per proteggere i valori ma non usare ancora const nelle dichiarazioni degli articoli?
'std :: vector getItems() const {return std :: vector (items.begin(), items.end()); } ' –
@KerrekSB questa dovrebbe essere una risposta. –
@ KerrekSB Grazie per la risposta, ma è l'unico modo? Mi sembra di creare una copia inefficiente anche se creo una copia devo restituire per valore vero? inoltre, cosa ne pensi della prima domanda? – Adam