Ich schreibe eine Zugriffsmethode für einen gemeinsam genutzten Zeiger in C ++, die ungefähr so aussieht:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Um die Konstanz des getBar()Rückgabetyps zu unterstützen, sollte ein Wert verwendet werden boost::shared_ptr, der eine Änderung des Zeigertyps verhindert Bar. Ich vermute, dass dies shared_ptr<const Bar>der Typ ist, zu dem ich zurückkehren möchte, während const shared_ptr<Bar>dies eine Neuzuweisung des Zeigers selbst verhindern würde, um auf einen anderen zu zeigen, Baraber eine Änderung des Zeigers zulässt, auf den Barer zeigt ... Ich bin mir jedoch nicht sicher. Ich würde es begrüßen, wenn jemand, der es genau weiß, dies entweder bestätigen oder mich korrigieren könnte, wenn ich etwas falsch gemacht hätte. Vielen Dank!
conständert normalerweise, was _preced es ist, T *constist also ein constZeiger auf Tund T const*ist ein Zeiger auf const T. Und es ist am besten zu vermeiden, constmit nichts davor zu verwenden.
T *constund T const *ist der gleiche wie der Unterschied zwischen const shared_ptr<T>undshared_ptr<const T>
*und dies->bestätigen.