ฉันกำลังเขียนวิธีการเข้าถึงสำหรับตัวชี้ที่ใช้ร่วมกันใน C ++ ซึ่งมีลักษณะดังนี้:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
ดังนั้นเพื่อรองรับ const-ness ของgetBar()ประเภทการส่งคืนควรเป็นสิ่งboost::shared_ptrที่ป้องกันการแก้ไขที่Barชี้ไป ฉันเดาว่าshared_ptr<const Bar>เป็นประเภทที่ฉันต้องการกลับไปทำเช่นนั้นในขณะที่const shared_ptr<Bar>จะป้องกันไม่ให้การกำหนดตัวชี้ซ้ำเพื่อชี้ไปยังตำแหน่งอื่นBarแต่อนุญาตให้แก้ไขสิ่งBarที่ชี้ไป ... อย่างไรก็ตามฉันไม่แน่ใจ ฉันจะขอบคุณมากถ้ามีคนที่รู้แน่ชัดสามารถยืนยันเรื่องนี้หรือแก้ไขฉันได้หากฉันเข้าใจผิด ขอบคุณ!
constปกติปรับเปลี่ยนสิ่งที่ _precedes จึงT *constเป็นconstตัวชี้ไปTและเป็นตัวชี้ไปT const* const Tและที่ดีที่สุดคือหลีกเลี่ยงการใช้โดยconstไม่มีอะไรมาก่อน
T *constและT const *เหมือนกับความแตกต่างระหว่าง const shared_ptr<T>และshared_ptr<const T>
*และ->เพื่อยืนยันสิ่งนี้