【发布时间】:2016-06-22 15:34:06
【问题描述】:
class B
{
public:
A* GetA() const { return obj; }
private:
A* obj;
}
...
B b;
b.GetA()->AInterfaceMethod(params);
所以我的问题是:
- 如果函数不是 const 会有什么不同?
- 对通过 GetA() 获得的指针可以做什么有任何限制吗?是常量吗?它是否指向 const A?
- 什么时候有用?
我在 Unreal 教程中遇到过这个问题(A 在教程中被前向声明)。
编辑:我可能搞砸了,但调用 确实 工作。我在下面包含了实际的虚幻代码:
class ABatteryPickup : public APickup
{
ABatteryPickup()
{
GetMesh()->SetSimulatePhysics(true);
}
}
class Pickup
{
public:
class UStaticMeshComponent* GetMesh() const { return PickupMesh; }
private:
class UStaticMeshComponent* PickupMesh;
}
UStaticMeshComponent::SetSimulatePhysics() 不是const。
【问题讨论】:
-
B的构造函数将指针Abc绑定到一个临时对象。幸运的是Print没有访问任何数据成员,否则它将是无效读取。 -
@Ajay 好吧,这对我来说很有意义,但是 GetMesh()->SetSimulatePhysics(true) 在 Unreal 中是如何工作的?
-
好吧,因为返回类型是非常量。返回的对象不是 const 对象。将其更改为
const class UStaticMeshComponent* GetMesh() const -
嗯,我换个说法:上面
GetMesh() const中的const有什么意义?
标签: c++ constants unreal-engine4