我正在学习C ++,我希望得到一些关于存储成员变量对象的建议。我想在A中存储B的实例,这样做的最佳方法是什么?
[编辑] - 我让这个例子更真实。我需要能够在运行时构造和分配纹理并将其分配给游戏对象。
class GameObject
{
public:
Texture texture;
};
....
GameObject gameObject;
Texture texture;
gameObject.texture = texture;
或
class GameObject
{
public:
Texture *texture;
};
....
GameObject gameObject;
gameObject.texture = new Texture;
我试图不使用指针,但在某些情况下我觉得我需要。
答案 0 :(得分:3)
如果要重置(引用不同的class B
个对象),则将成员变量用于不同的对象时使用指针。如果不只是使用一个对象。
是的,避免指针是一个好主意,如果需要使用它们,则更喜欢使用智能指针而不是原始/裸指针。
答案 1 :(得分:0)
这实际上取决于您的特定解决方案和需求。两种方式都很好,可以接受。没有“正确的方法”来处理任何语言的大多数事情,因为你的解决方案决定了应该如何完成。
虽然要记住的一件事是,如果B
是一个包含许多数据成员的大型类,如果不使用指针,则会增加A
的大小。此外,如果您确实使用指针,则需要确保执行正确的分配和取消分配,并且不要信任用户这样做。
答案 2 :(得分:0)
以下是我认为使用的好标准:
功能:是B的A部分还是仅与之相关?汽车有一个引擎,但驱动程序是外部的。另一种看待这种情况的方法是:它们从一开始就是在一起还是B分配/给予A?
构造:在构建A时B是完全已知/可定义的吗?
答案 3 :(得分:0)
这取决于您是否希望A
控制B
的内存。
在其他对象之间来回传递对象时,使用指针非常有用。当您决定不使用指针时,重要的是要意识到只要对象超出范围,其成员变量也是如此。如果指向该对象的成员的指针仍存在于其他地方,则可能导致问题。
如果这在您的应用程序中不是问题,我会避免使用指针。