我最近開始嘗試在我的代碼中強制const正確性。在函數的定義,我養活一個常量指針到類LorentzM
的恆定對象:const正確性和shared_ptr,設計的問題?
void AnalysisObject::SetOwnedPointer(const int maptotree_In, const LorentzM* const momentum_In){
owned_pp4_original.reset(momentum_In);
maptotree=maptotree_In;
}
其中owned_pp4_original
是
shared_ptr<LorentzM> owned_pp4_original;
我這樣做,因爲這個功能,SetOwnedPointer,應該永遠不變的LorentzM* momentum_In
也不應該改變它指向的對象,所以它是常量對象的常量指針。
然而,一個shared_ptr創建到對象,其中momentum_In點,我做想用這個shared_ptr的改變以後的對象:
void ChangeLorentzM(const double px, const double py, const double pz, const double E){
owned_pp4_original->SetPxPyPzE(px,py,pz,E); //THIS CHANGES THE OBJECT
}
因此,一方面,要能夠做到:
owned_pp4_original.reset(momentum_In);
owned_pp4_original
應該是一個shared_ptr<const LorentzM>
但後來,我不會無法通過它改變對象。
這張照片有什麼問題?
非常感謝。
感謝您的回覆。然後我誤解了const正確性的那部分。你說的話更有意義。 – elelias