LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Так это же СУВТ из метапрога. В нем это устроено так:

struct ContainerType {
  enum Key {
    TYPE_A,
    TYPE_B,
    TYPE_C
  } key;
  union {
    TypeA a;
    TypeB b;
    TypeC c;
  };
};

// Использование
ContainerType suvt = { 
  .key = TYPE_A,
  .a = CreateTypeA()
};

...
switch(suvt.key) {
case TYPE_A:
  return suvt.a.value+'A';
case TYPE_B:
  return suvt.b.value+'B';
...
}

Исходная версия MOPKOBKA, :

Так это же СУВТ из метапрога. В нем это устроено так:

struct ContainerType {
  enum Key {
    TYPE_A,
    TYPE_B,
    TYPE_C
  } key;
  union {
    TypeA a;
    TypeB b;
    TypeC c;
  };
};

// Использование
TypeContainer suvt = { 
  .key = TYPE_A,
  .a = CreateTypeA()
};

...
switch(suvt.key) {
case TYPE_A:
  return suvt.a.value+'A';
case TYPE_B:
  return suvt.b.value+'B';
...
}