【发布时间】:2017-03-09 03:58:18
【问题描述】:
假设存在如下基类:
class foo
{
int x0;//private variable should not be a participant in derived union
//(unless bar is a friend)
protected:
int x1;
};
还有一个继承它的派生类:
class bar : foo
{
protected:
union
{
//int foo::x1;
char[4] x2;
};
};
我想将基成员 x1 放在派生类的成员联合中并重新使用其空间。
典型的派生类可以与基类成员一起玩,并且可以做任何事情,除了重用它们的空间。
问题
- 这是否可能使用任何“魔法”并且仍然可以免受 UB 的影响?
- 如果不可能,有什么理由可以认为这是严重错误的?
- 是否有可能(如果有的话)将其扩展到联合内的无名结构以保存基成员?
编辑:“魔法”并不是指任何供应商特定的扩展。
【问题讨论】:
标签: c++ inheritance unions