1

我的 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;

但是当我尝试发送到服务器时,我收到一个错误,告诉我状态字段不存在,并且结构的转储显示它为空。

如何设置测试状态?

使用节俭 0.6.1。

4

1 回答 1

0

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

您是否尝试过在 Thrift 客户端上做一个 GDB 并在将其发送到服务器之前查看 testResult 的内容?检查其内容是否有意义。

于 2012-10-29T11:32:30.050 回答