给定一个类如下面的一个类和给定的union,如何将union初始化为正确的值?
这里尝试的是使用两种或更多种不同类型作为该类的核心数据类型之一.考虑到提前知道类型,将构造将要使用的类型的并集,而不是使用void*.问题是如何在实例化类时初始化正确的union成员.类型不是多态的,因此通常的继承模型似乎不合适.一些天真的尝试初始化正确的工会成员无处可去.
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;
};
Run Code Online (Sandbox Code Playgroud)
在寻找解决方案之后,答案变得明显,并且可能是这个答案库的一个很好的解决方案,所以我将其包含在下面.