Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从驻留在非相邻内存中的实例继承_C++ - Fatal编程技术网

C++ 从驻留在非相邻内存中的实例继承

C++ 从驻留在非相邻内存中的实例继承,c++,C++,我认为这是不可能的,但我应该问: 我有一个“物体”,它是由一个头部和一个尾巴共同构成的身体在精神上形成的。 头部是数组的一个元素 主体具有存储头部索引的成员 struct head{ body* bodyP; int kind; int execution_level;} head heads[0x1000]; struct tail{ int head_index; other_data xxxx; } 结构(或类)“head”也有我需要从tail中访问的方法 我想要的是将“尾巴”的名字改

我认为这是不可能的,但我应该问:

我有一个“物体”,它是由一个头部和一个尾巴共同构成的身体在精神上形成的。 头部是数组的一个元素

主体具有存储头部索引的成员

struct head{ body* bodyP; int kind; int execution_level;}
head heads[0x1000];

struct tail{ int head_index; other_data xxxx; }
结构(或类)“head”也有我需要从tail中访问的方法


我想要的是将“尾巴”的名字改为“身体”(简单的部分),并且能够通过使用头部索引来引用头部,使“身体”从头部继承。

您需要将其绘制出来,以显示常见和可选的部分

struct head{ body* bodyP; int kind; int execution_level;}
head heads[0x1000];

struct tail{ int head_index; other_data xxxx; }
以下是我对您的问题描述的理解(实现),而不是您的代码:

struct Body;  // Forward declaration.

struct Common_To_Head_Tail
{
  Body * p_body; // link to a body, hopefully it's same between head and tail.
  // Methods common to Head and Tail
};

struct Head
: public Common_To_Head_Tail
{
}

struct Tail
: public Common_To_Head_Tail
{
}

struct Body
{
  Head * p_head;
  Tail * p_tail;
};
解释
有一些东西是头部和尾部共同的,比如指向身体的指针(如果愿意,可以使用索引)。需要forward声明,以便编译器能够解析
正文
指针

Head
Body
继承(共享)Head和Body的公共内容

身体包括头和尾巴。使用指针(索引)是因为零件可以位于其他位置


希望这有帮助。

不起作用。但是您当然可以将转发函数和访问器添加到
body
中,这些函数和访问器可以间接执行此操作。顺便说一句:继承只能在类中进行,而不能在实例中进行。关于继承,我知道是在类中进行的,而不是在实例中进行的,但我使用表达式指出,我已经有了要从中继承的实例。在编译器中,有一个位置可以转换子类的指针(本质上是通过减去继承类的大小)到继承对象。我是否可以在那里更改一些内容并(以非标准的方式)提供该功能。如果你愿意破解编译器,除了你的想象力、时间和技能,没有限制。是的,答案针对的是要求的内容,但这意味着Head中以前的代码应该更改,以便供Common_to_Head_Tail使用。我问的是,是否有一种方法可以通过继承的方式来避免它。基本上正如我所理解的他对编译器提出了一个问题:给定一个从5个结构继承的结构,有一种方法可以将指向从5个结构继承的结构的主指针转换为每种不同情况下的5个不同指针。这实际上只需添加一些偏移量即可。这里要问的是定义一种不同的方法来转换指向继承指针的主指针。这可能是一个模板函数,它给出了主指针,子结构的类给出了指向子结构的指针。因此,通过重载子结构的默认行为,整个概念可以无缝地工作。程序员在心里会看到整个结构。