Estou escrevendo um método de acesso para um ponteiro compartilhado em C ++ que funciona mais ou menos assim:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Portanto, para oferecer suporte à constância getBar()
do tipo de retorno deve ser um boost::shared_ptr
que evite a modificação do que Bar
ele aponta. Meu palpite é que esse shared_ptr<const Bar>
é o tipo que eu quero retornar para fazer isso, ao passo const shared_ptr<Bar>
que impediria a reatribuição do próprio ponteiro para apontar para um diferente, Bar
mas permitiria a modificação do para o Bar
qual ele aponta ... No entanto, não tenho certeza. Eu agradeceria se alguém que sabe com certeza pudesse confirmar isso ou me corrigir se eu errar. Obrigado!
const
normalmente modifica o que _precede, então T *const
é um const
ponteiro para T
e T const*
é um ponteiro para const
T
. E é melhor evitar o uso const
sem nada antes disso.
T *const
e T const *
é a mesma que a diferença entre const shared_ptr<T>
eshared_ptr<const T>
*
e->
confirmar isso.