在C ++中将对象存储为类中的指针

时间:2011-11-14 19:28:27

标签: c++ pointers

我正在学习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;

我试图不使用指针,但在某些情况下我觉得我需要。

4 个答案:

答案 0 :(得分:3)

如果要重置(引用不同的class B个对象),则将成员变量用于不同的对象时使用指针。如果不只是使用一个对象。

是的,避免指针是一个好主意,如果需要使用它们,则更喜欢使用智能指针而不是原始/裸指针。

答案 1 :(得分:0)

这实际上取决于您的特定解决方案和需求。两种方式都很好,可以接受。没有“正确的方法”来处理任何语言的大多数事情,因为你的解决方案决定了应该如何完成。

虽然要记住的一件事是,如果B是一个包含许多数据成员的大型类,如果不使用指针,则会增加A的大小。此外,如果您确实使用指针,则需要确保执行正确的分配和取消分配,并且不要信任用户这样做。

答案 2 :(得分:0)

以下是我认为使用的好标准:

  1. 功能:是B的A部分还是仅与之相关?汽车有一个引擎,但驱动程序是外部的。另一种看待这种情况的方法是:它们从一开始就是在一起还是B分配/给予A?

  2. 构造:在构建A时B是完全已知/可定义的吗?

答案 3 :(得分:0)

这取决于您是否希望A控制B的内存。

在其他对象之间来回传递对象时,使用指针非常有用。当您决定不使用指针时,重要的是要意识到只要对象超出范围,其成员变量也是如此。如果指向该对象的成员的指针仍存在于其他地方,则可能导致问题。

如果这在您的应用程序中不是问题,我会避免使用指针。