現在のオブジェクトが他の含まれているオブジェクトによって操作されているシステムで、現在のオブジェクトへの参照が渡されると、リンクは何も終了せずに続きます(下のコードの場合はCar->myCurrentComponent->myCar_Brake->myCurrentComponent->myCar_Brake->myCurrentComponent
.... )。ポインタ参照パターン - よく使用されますか?
I Car
およびCar->myCurrentComponent->myCar_Brake
は同じアドレスを参照し、同じオブジェクトを指します。それは車の中にCarを含むBrakeが入っているようなものです。
実際、Carは唯一のオブジェクトです。myCar_BrakeとmyCar_Speedはそれを参照します(参照)。このような参照とポインタの使用は通常ですか?このアプローチに潜在的な問題はありますか?
あなたはそれを理解しての追跡をすることなく、あなたのオブジェクトグラフをトラバースしようとしない限り、あなたのオブジェクトグラフ内の循環参照を持つ根本的な問題はありませんサンプルコード
class Brake
class C
class Car
{
public:
Car();
// Objects of type B and C.
Brake* myBrake;
Speed* mySpeed;
// Current component under action.
Component* myCurrentComponent;
}
/******************************/
// Constructor
Car::Car()
{
myBrake = new Brake(*this);
mySpeed = new Speed(*this);
myCurrentComponent = myBrake;
}
/******************************/
class Brake: public Component
{
public:
Brake(Car&);
// Needs to operate on A.
Car* myCar_Brake;
}
// Constructor
Brake::Brake(Car&)
{
myCar_Brake = Car;
}
/******************************/
class Speed
{
public:
Speed(Car&);
// Needs to operate on A.
Car* myCar_Speed;
}
// Constructor
Speed::Speed(Car&)
{
myCar_Speed = Car;
}
/****************************/
ブレーキとスピードが多態性でない限り、ポインタは必要ありません。代わりにオブジェクトを使用します。 –
申し訳ありません.....示されていませんが、あなたが指摘したように、それらは多型です。 – First