我使用的是omniORB和C++。使用C++附加CORBA序列的簡單方法
在我的應用程序中,我得到幾個小的CORBA序列形成不同的模塊,然後我需要將它們結合到一個大序列進行進一步處理。 有沒有簡單的方法做到這一點?類似seq2.append(seq1)
或seq2.push_back(seq1)
。還是一些運營商? (我真的是STL的新手)。
我發現的唯一方法是手動檢查小序列的每個元素並將其添加到大序列中。
//idl
struct Device;
typedef sequence<Device> DevicesList;
//c++
icore::DevicesList full_list;
foreach (const DStatusList &stlist, states_) {
icore::DevicesList list = convertList(stlist);
int newlength = full_list.length() + list.length();
int last_index = full_list.length();
full_list.length(newlength);
int j=0;
for(int i=last_index; i< last_index+list.length(); i++,j++) {
full_list[i] = list[j];
}
}
謝謝。
在我的情況下,我可以結合基本列表(而不是CORBA),然後將結果轉換爲CORBA列表。但問題要求瞭解其他方式。儘管對英語不好,但很抱歉 – uni
我建議以這種方式使用它:嘗試儘可能保持通信的CORBA類型,並使用std(或您自己的)容器進行處理。 – stefaanv
新的IDL到C++ 11l語言映射確實使用std容器而不是特殊的CORBA類型,請參閱http://swsupport.remedy.nl以獲取TAOX11,這是一個支持此新映射的CORBA實現。 –