2012-10-29 2 views
1

У меня есть что-то подобное в моей сберегательной схеме:Установки союза в C++ с использованием бережливости

struct TestStatusOne { .... } 
struct TestStatusTwo { .... } 

union TestStatus { 
    1: TestStatusOne ONE 
    2: TestStatusTwo TWO 
} 

struct TestResult { 
    1: required TestStatus status 
} 

я могу определить этот штраф с помощью библиотеки Java, Perl и Python, но я возникает проблемы, делая это с C++ библиотеки. Вот пример в Java:

TestResult testResult = new TestResult(
    new TestStatus(TestStatus._Fields.findByName("ONE"), testStatus) 
); 

Ближайший я должен получить это определено в С ++:

TestResult testResult; 
testResult.status.ONE = testStatus; 

Но когда я пытаюсь отправить на сервер я получаю сообщение об ошибке, говорящее мне поле состояния нет, а дамп структуры показывает это как null.

Как установить статус теста?

Использование Thrift 0.6.1.

ответ

0

Это может быть проблема с отсутствующим оператором присваивания? В зависимости от определения структур TestStatusOne и TestStatusTwo вам может потребоваться создать оператор присваивания (operator =()).

Вы пытались сделать GDB на Thrift-клиенте и посмотреть содержимое testResult перед отправкой его на сервер? Убедитесь, что его содержимое имеет смысл.

Смежные вопросы