私は最近、自分のコードで const の正確性を強制しようとし始めました。関数定義では、クラスの定数オブジェクトへの定数ポインターをフィードしますLorentzM
。
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
それが指しているオブジェクトを変更したり変更したりしてはならないため、定数オブジェクトへの定数ポインターです。
ただし、motion_In が指すオブジェクトに対して shared_ptr が作成されます。後でこの 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>
しかし、それを介してオブジェクトを変更することはできません。
この写真のどこが間違っていますか?
どうもありがとう。