c ++指针转换过载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c ++指针转换过载相关的知识,希望对你有一定的参考价值。

基本问题是有人知道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 =子类,例如Weapon

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);

没有铸造它。

以上是关于c ++指针转换过载的主要内容,如果未能解决你的问题,请参考以下文章

将 C 代码转换为 x86-64 程序集

C中的连续指针转换

如何将 C 变长数组代码转换为 Rust?

关于强制类型转换(c语言)

在 C 和 C++ 中将 int 值转换为 char 指针差异

c语言中字符串能否转为代码执行?或者有啥替代办法?