私のコードを設計するために、私はいくつかのUMLクラス図を描いています。 私はいくつかの共有オブジェクトを持っています。これらのオブジェクトの所有権は実際に共有されているので、どのように描くべきなのでしょうか?私はクラス図では、これら3つのクラス間の関係を表現するにはどうすればよいUMLで共有オブジェクトを表現する方法は?
class A
{
public:
A(){
std::shared_ptr<CSharedObj> sharedObj = std::make_shared<CSharedObj>;
mB = B(sharedObj);
}
private:
B mB;
};
class B
{
public:
B(std::shared_ptr<CSharedObj>);
private:
std::shared_ptr<CSharedObj> mSharedObj;
};
class CSharedObj
{
public:
CSharedObj();
};
: はここで何が起こっているかのC++の例具体的には?
なぜ 'B'は' CSharedObj'の共有所有権を必要としますか? 'B'の存続期間は' A'の存続期間と同じですので、安全に 'CSharedObj'への非所有ポインタを持つことができますか? –
あなたの言うことは理論的には正しいですが、アーキテクチャは上記の例より少し複雑です。アイデアは、Aが必要なものすべてを作成し、それを各サブコンポーネントに配布することです(A、B、B、B、BnはAによって作成されたリソースを共有しています)。ハードウェアモジュールと1対1の関係を持つため、複数のリソースを作成する必要はありませんが、Biに初期化して渡す以外は何もしないため、Aに格納する必要はありません。 –
「A」に共有オブジェクトが格納されていないことがわかりました。 –