Thrift スキーマには次のようなものがあります。
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)
);
C ++で定義するのに最も近いのは次のとおりです。
TestResult testResult;
testResult.status.ONE = testStatus;
しかし、サーバーに送信しようとすると、ステータス フィールドが存在しないというエラーが表示され、構造体のダンプにはそれが null として表示されます。
テストステータスを設定するにはどうすればよいですか?
Thrift 0.6.1 を使用しています。