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;
};
淘換的解決方案後,答案變得明顯,並有可能成爲這個倉庫答案的一個很好的解決方案,所以我把它給下面。