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_ptr
che impedisce la modifica del Bar
punto 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 Bar
ma consentirebbe la modifica del Bar
punto a cui punta ... Tuttavia, non ne sono sicuro. Apprezzerei se qualcuno che lo sa con certezza potesse confermarlo o correggermi se ho sbagliato. Grazie!
const
normalmente modifica quello _precedes, quindi T *const
è un const
puntatore T
, e T const*
è un puntatore a const
T
. Ed è meglio evitare di utilizzare const
con nulla che lo preceda.
T *const
e T const *
è uguale alla differenza tra const shared_ptr<T>
eshared_ptr<const T>
*
e->
confermarlo.