在C++中使用节俭设置联盟

在C++中使用节俭设置联盟,c++,thrift,C++,Thrift,在我的节俭模式中,我有类似的东西: struct TestStatusOne { .... } struct TestStatusTwo { .... } union TestStatus { 1: TestStatusOne ONE 2: TestStatusTwo TWO } struct TestResult { 1: required TestStatus status } 我可以使用Java、Perl和Python库来定义这一点,但是我 使用C++库时有困难。下面

在我的节俭模式中,我有类似的东西:

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

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

struct TestResult {
  1: required TestStatus status
}
我可以使用Java、Perl和Python库来定义这一点,但是我 使用C++库时有困难。下面是一个例子 爪哇:

<> P>我在C++中定义的最接近的是:

TestResult testResult;
testResult.status.ONE = testStatus;
但是当我试图发送到服务器时,我得到一个错误,告诉我 状态字段不存在,结构的转储显示为 空

如何设置测试状态


使用Thrift 0.6.1.

这可能是缺少赋值运算符的问题吗?根据结构TestStatusOne和TestStatusTwo的定义,您可能需要创建赋值运算符operator=

您是否尝试过在Thrift客户端上执行GDB,并在将测试结果发送到服务器之前查看其内容?检查其内容是否有意义

TestResult testResult;
testResult.status.ONE = testStatus;