2012-10-29 88 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) 
); 

我得得到它在C++中定義的最接近的是:

TestResult testResult; 
testResult.status.ONE = testStatus; 

但是,當我嘗試發送到服務器,我得到一個錯誤,告訴我 狀態字段不存在,並且結構的轉儲將其顯示爲 null。

如何設置測試狀態?

使用Thrift 0.6.1。

回答

0

難道這是一個缺少賦值運算符的問題嗎?根據結構TestStatusOne和TestStatusTwo的定義,您可能需要創建一個賦值運算符(operator =())。

您是否曾嘗試在Thrift客戶端上執行GDB,並在將其發送到服務器之前查看testResult的內容?檢查其內容是否合理。