7
给定一个如下所示的类和给定的联合,如何将联合初始化为正确的值?如何在类初始化程序中设置联合?
这里正在尝试的是使用两种或更多不同类型作为该类的核心数据类型之一。如果提前知道类型,则不会使用void *,而是构造要使用的类型的并集。问题是如何在实例化类时初始化正确的联合成员。这些类型不是多态的,所以通常的继承模型似乎并不合适。一些天真的尝试初始化正确的工会成员没有任何地方。
union Union {
int n;
char *sz;
};
class Class {
public:
Class(int n): d(1.0), u(n) {}
Class(char *sz): d(2.0), u(sz) {}
....
double d;
Union u;
};
淘换的解决方案后,答案变得明显,并有可能成为这个仓库答案的一个很好的解决方案,所以我把它给下面。