Sto scrivendo un metodo di accesso per un puntatore condiviso in C ++ che funziona in questo modo:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Quindi per supportare la costanza del getBar()tipo restituito dovrebbe essere un boost::shared_ptrche impedisce la modifica del Barpunto a cui punta. La mia ipotesi è che shared_ptr<const Bar>sia il tipo a cui voglio tornare per farlo, mentre const shared_ptr<Bar>impedirebbe la riassegnazione del puntatore stesso in modo che punti a un diverso Barma consentirebbe la modifica del Barpunto a cui punta ... Tuttavia, non ne sono sicuro. Apprezzerei se qualcuno che lo sa con certezza potesse confermarlo o correggermi se ho sbagliato. Grazie!
constnormalmente modifica quello _precedes, quindi T *constè un constpuntatore T, e T const*è un puntatore a const T. Ed è meglio evitare di utilizzare constcon nulla che lo preceda.
T *conste T const *è uguale alla differenza tra const shared_ptr<T>eshared_ptr<const T>
*e->confermarlo.