以下内容对我来说似乎完全合乎逻辑,但不是有效的 c++。 union 不能隐式转换为其成员类型之一。有谁知道不这样做的充分理由吗?
union u {
int i;
char c;
}
function f(int i) {
}
int main() {
u v;
v.i = 6;
f(v);
}
谁能提出一个干净的替代方案(我能想到的最干净的是 f(v.i);
,我承认它非常干净,但上面的看起来更干净)
最佳答案
虽然同意 Crazy Eddie 的观点,它在我看来并没有那么好,但实际上您可以通过定义它来获得隐式转换:
union u {
int i;
char c;
operator int () const { return i; }
operator char () const { return c; }
};
关于c++将 union 转换为其成员类型之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060177/