Union in thrift muestra todos los valores establecidos en c ++

Hice una simple unión de tres campos.

union example{
    1:string STRING,
    2:i64 INT64,
    3:double DOUBLE
}

Y ejemplifico la unión de ejemplo en el cliente como:

example ex;
ex.__set_STRING("Example");
ex.__isset.STRING = true;

Y envíe el ejemplo a través de un método que acepte el ejemplo como argumento

En el servidor, el método que se llama se realiza así:

void get(const example &ex)
  {
    cout << ex.__isset.STRING << ' ' << ex.__isset.INT64 << ' ' <<
        ex.__isset.DOUBLE << endl;
    cout << ex << endl;
  }

Y curiosamente, la salida para un programa tan pequeño es:

1 1 1
example(STRING="Example", INT64=0, DOUBLE=0)

No sé si esta es la forma correcta de establecer el tipo de unión, pero probé varias combinaciones y ninguna parece funcionar.

Las fuentes del fragmento se pueden encontrar aquí:https://github.com/enriquefynn/union_thrift

Respuestas a la pregunta(1)

Su respuesta a la pregunta