Учитывая такой класс, как приведенный ниже, и данное объединение, как инициализировать объединение правильным значением?
Здесь делается попытка использовать два или более разных типа в качестве одного из основных типов данных для класса. Вместо использования 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;
};
После поиска решения ответ стал очевиден и, возможно, может быть хорошим решением для этого хранилища ответов, поэтому я включаю его ниже.