ฉันกำลังเขียนวิธีการเข้าถึงสำหรับตัวชี้ที่ใช้ร่วมกันใน 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>
*
และ->
เพื่อยืนยันสิ่งนี้