J'écris une méthode d'accesseur pour un pointeur partagé en C ++ qui ressemble à ceci:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Donc, pour prendre en charge la const-ness du getBar()
type de retour devrait être un boost::shared_ptr
qui empêche la modification du Bar
point vers lequel il pointe. Je suppose que shared_ptr<const Bar>
c'est le type que je veux retourner pour faire cela, alors que const shared_ptr<Bar>
cela empêcherait la réaffectation du pointeur lui-même pour pointer vers un autre Bar
mais permettrait de modifier le Bar
point vers lequel il pointe ... Cependant, je ne suis pas sûr. J'apprécierais que quelqu'un qui sait avec certitude puisse confirmer cela ou me corriger si je me trompe. Merci!
const
modifie normalement ce que _précède, ainsi T *const
est un const
pointeur vers T
et T const*
est un pointeur vers const
T
. Et il vaut mieux éviter d'utiliser const
sans rien le précédant.
T *const
et T const *
est la même que la différence entre const shared_ptr<T>
etshared_ptr<const T>
*
et->
le confirmer.