私は C++ を初めて使用し、特にゲッターを使用して、所有権について頭を悩ませています。コード例を次に示します。
class GameObject {
public:
Transform *transform();
private:
Transform _transform;
};
生のポインターは、オブジェクトが存在しなくなったときに誰かが後でアクセスできるため、使用するのは安全ではないと思いますか?
変換を所有するのは GameObject だけなので、変換メンバーに unique_ptr を使用することを考えました。しかし、ゲッターからそれを返すことはできませんよね? しかし、繰り返しになりますが、上記のようにメンバーとして追加するのではなく、最初に unique_ptr を使用するのはなぜでしょうか?
では、なぜ shared_ptr を使用しないのでしょうか? 私には間違っているように思えます。所有権を共有したくありません。GameObject が所有者であり、他の人がアクセスする可能性があります...
それで、それは何ですか?参照?他の人が変換への参照を安全に保持できるため、shared_ptr が最も賢明な選択だと思いますが、囲んでいるゲームオブジェクトが破壊されて変換が役に立たなくなったら、それは何の役に立つでしょうか? 私はおそらくここで所有権について間違った方法で考えているだけですが、すべての方法が間違っているように思えます。ご協力いただきありがとうございます。