我的Thrift架构中有这样的东西:
struct TestStatusOne { .... }
struct TestStatusTwo { .... }
union TestStatus {
1: TestStatusOne ONE
2: TestStatusTwo TWO
}
struct TestResult {
1: required TestStatus status
}
我可以使用Java,Perl和Python库来定义这个,但是 使用C ++库时遇到问题。这是一个例子 爪哇:
TestResult testResult = new TestResult(
new TestStatus(TestStatus._Fields.findByName("ONE"), testStatus)
);
我最接近在C ++中定义的是:
TestResult testResult;
testResult.status.ONE = testStatus;
但是当我尝试发送到服务器时,我收到一个错误告诉我 状态字段不存在,结构的转储显示为 空。
如何设置测试状态?
使用Thrift 0.6.1。
答案 0 :(得分:0)
这可能是缺少赋值运算符的问题吗?根据结构TestStatusOne和TestStatusTwo的定义,您可能需要创建赋值运算符(operator =())。
您是否尝试在Thrift客户端上执行GDB并在将其发送到服务器之前查看testResult的内容?检查其内容是否有意义。