c ++指针转换过载

时间:2017-12-18 10:42:13

标签: c++ casting overloading operator-keyword

基本问题是有人知道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; }
}

如果这是一个迟钝的问题/重复,我真的找不到任何对不起,但我并没有完全理解这一点。如果someoen有类似的东西,我将不胜感激。

编辑:一些额外的信息 Class1 = baseclass,例如Player Class2 =子类,例如武器

Class1拥有一个指向Subclass的指针,该子类具有与origin

相同的值

玩家有一个指向武器的指针 基本上我想做的是

GetEntity返回一个类型为Player的指针(但返回值也可能是武器)

基本上我现在要做的就是像

那样自动化投射过程
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);

没有施放它。

1 个答案:

答案 0 :(得分:0)

你想要达到的确切目标无法完成。原因是行Class2* b = a;根本不处理类类型,ab都是内置指针类型。当所有操作数都是内置的非枚举类型时,无法引入操作的自定义行为。