假设我有两个名称不同但结构完全相同的类。有没有办法将一个类的对象转换为另一个类?
这听起来可能很愚蠢,但我想这样做是有原因的。我的应用程序的架构提供了抽象类component
,storage
现成的应用程序将包含几个派生自的专用组件component
,每个组件都将定义自己的存储类型,派生自storage
. 在应用程序初始化期间,对于每个组件,都会创建一个其自定义存储类型的存储对象,并作为指向该组件的指针传递。
这样所有组件都保持完全独立,这对于可重用性和测试非常有用。但是,当然,需要在组件之间交换信息。为了做到这一点,考虑到独立性,我想让两个组件获得一个指向同一个存储的存储指针。约束指针必须是组件特定的存储类型。
框架代码(抽象类)
class Storage {};
class Component {
public:
void SetStorage(Storage* storage);
private:
Storage* storage;
};
示例组件
class PhysicsStorage : public Storage;
class PhysicsComponent : public Component;
另一个组件
class CollisionStorage : public Storage; // same structure as PhysicsStorage as both components need the same data like world coordinates and rotations of all forms in the 3d space
class CollisionComponent : public Component;
主要应用
#include "system.h"
PhysicsStorage Worlddata;
PhysicsComponent Physics;
CollisionComponent Collision;
Physics.SetStorage(&Worlddata);
Collision.SetStorage(&Worlddata); // this points to a PhysicsStorage but that is actually the same like a CollisionStorage which is expected
所以我想知道是否有办法将 say 的指针转换PhysicsStorage*
为CollisionStorage*
. 在这种情况下,两者都在其相关组件类的文件中定义。两者都是从 abstract 派生的Storage
。
我只想在两种自定义存储类型具有完全相同结构的情况下这样做。否则就没有意义了。我对高级指针的使用不太熟悉,所以我想知道是否有办法做到这一点。我所知道的是您可以转换为基类,但这不是我想要的。对两个组件使用共享存储类型会破坏独立性。非常感谢!