Sto provando a fornire un getter per riferimento a un elenco di oggetti in una classe. Il mio setup ha un aspetto simile a questo:
class c_Container
{
public:
c_Item* Get(int uid);
private:
c_Item itemList[10];
}
class c_Item
{
public:
int uid;
}
c_Item* c_Container::Get(int uid)
{
for (int i = 0; i < 10; i++)
{
if (itemList[i].uid == uid)
{
return &itemList[i];
}
}
return NULL;
}
Questo è un esempio semplicistico che mostra l'utilizzo, di solito un oggetto c_Item avrebbe altri metodi che farebbero altre cose. Vorremmo ottenere l'oggetto c_Item da itemList per riferimento o per indirizzo in modo che possiamo modificarlo direttamente.
Durante la compilazione, ottengo un errore di sfilacciamento come "Exposing low access member" itemList "". Se provo a tornare per riferimento invece di restituire un puntatore, ottengo la stessa cosa. Credo di capire perché, ma non riesco a concepire un modo migliore per ottenere un oggetto da una classe di container come questo per riferimento. Posso correggere l'errore rendendo publicList pubblico, ma sembra un accesso non necessario.
Al di fuori della creazione di metodi wrapper in c_Container per tutti i metodi di c_Item (che sembra ridondante), c'è un modo migliore per gestire una situazione come questa?