C++ 指针转换重载
c++ pointer cast overload
基本问题是有人知道用 C++ 实现这个的方法吗? Class 2 是 Class1 的子类,它必须保持这种状态。
Class1* a;
Class2* b = (Class2*)a;
basically allowing you
Class1* a;
Class2* b = a;
// tried this but didn't seem to work
class Class1
{
operator Class2*() { return (Class2*)this; }
}
如果这是一个迟钝的问题/重复的问题,我真的找不到任何遗憾,但我并没有完全理解这个问题。如果有人有类似的东西,我将不胜感激。
编辑:一些额外信息
Class1 = 基类,例如 Player
Class2 = 子类,例如武器
Class1 持有指向与 origin
具有相同值的子类的指针
玩家有一个指向武器的指针
基本上我想做的是
GetEntity return 类型为 Player 的指针(但 return 值也可以是 Weapon)
基本上现在我想做的是自动执行铸造过程
Player* p = GetEntity(0);
Player* p2 = GetEntity(1);
Weapon wpn = (Weapon*)p2;
//so that you are able to do
Weapon wpn = p2;
// Also that Stuff like that would be possible
void Test(Weapon *wpn);
Player *player = GetEntity(1);
// Yes I know this works Test((Weapon*)player) but I am lazy and that's the goal
Test(player);
没有投射它。
您想要实现的确切目标无法完成。原因是Class2* b = a;
行根本没有处理class类型,a
和b
都是内置指针类型。当所有操作数都是内置的非枚举类型时,无法引入操作的自定义行为。
基本问题是有人知道用 C++ 实现这个的方法吗? Class 2 是 Class1 的子类,它必须保持这种状态。
Class1* a;
Class2* b = (Class2*)a;
basically allowing you
Class1* a;
Class2* b = a;
// tried this but didn't seem to work
class Class1
{
operator Class2*() { return (Class2*)this; }
}
如果这是一个迟钝的问题/重复的问题,我真的找不到任何遗憾,但我并没有完全理解这个问题。如果有人有类似的东西,我将不胜感激。
编辑:一些额外信息 Class1 = 基类,例如 Player Class2 = 子类,例如武器
Class1 持有指向与 origin
具有相同值的子类的指针玩家有一个指向武器的指针 基本上我想做的是
GetEntity return 类型为 Player 的指针(但 return 值也可以是 Weapon)
基本上现在我想做的是自动执行铸造过程
Player* p = GetEntity(0);
Player* p2 = GetEntity(1);
Weapon wpn = (Weapon*)p2;
//so that you are able to do
Weapon wpn = p2;
// Also that Stuff like that would be possible
void Test(Weapon *wpn);
Player *player = GetEntity(1);
// Yes I know this works Test((Weapon*)player) but I am lazy and that's the goal
Test(player);
没有投射它。
您想要实现的确切目标无法完成。原因是Class2* b = a;
行根本没有处理class类型,a
和b
都是内置指针类型。当所有操作数都是内置的非枚举类型时,无法引入操作的自定义行为。