在c++中将对象存储为类中的指针
Store object as pointer in class in C++
我现在正在学习c++,我想得到一些关于存储成员变量对象的建议。我想在A中存储一个B的实例,最好的方法是什么?
[EDIT] -我使示例更真实。我需要能够在运行时构建和分配纹理,并将其分配给游戏对象。
class GameObject
{
public:
Texture texture;
};
....
GameObject gameObject;
Texture texture;
gameObject.texture = texture;
或
class GameObject
{
public:
Texture *texture;
};
....
GameObject gameObject;
gameObject.texture = new Texture;
我尽量不使用指针,但在某些情况下,我觉得我需要。
如果你想重新定位(引用不同的class B
对象)你的成员变量到不同的对象使用指针。如果不行,就用一个对象。
是的,避免指针是一个好主意,如果你需要使用它们,更喜欢智能指针,而不是原始/裸指针。
这实际上取决于您的特定解决方案和需求。两种方式都是可以接受的。在任何语言中,大多数事情都没有"正确的方法",因为你的解决方案决定了事情应该如何做。
虽然有一件事要记住,如果B
是一个有许多数据成员的大类,如果不使用指针,它会增加A
的大小。此外,如果您确实使用指针,则需要确保执行正确的分配和取消分配,而不是信任用户执行这些操作。
以下是我认为很好的使用标准:
-
功能:B是A的一部分还是仅仅与A相关?汽车有发动机,但驾驶员是外部的。另一种看待这个问题的方式是:它们是从一开始就在一起的,还是B被分配给了A?
-
构建:在构建A时,B是否完全已知/可定义?
这取决于您是否希望A
控制B
的内存。
在对象之间来回传递对象时,使用指针是非常有用的。当您决定不使用指针时,重要的是要认识到,一旦对象超出作用域,它的成员变量也会超出作用域。如果指向该对象成员的指针仍然存在,则可能导致问题。
如果这在你的应用程序中不是一个问题,我会避免使用指针。
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它