我正在开发一个项目,我需要使用swing实现GUI,在C ++中实现聊天服务器,使用Java实现聊天客户端。
我遇到了这个问题,实施了几乎相同的项目:
这是我的IDL的一部分,问题是:
typedef sequence<ICliente> ListaClientes;
interface IServer
{
attribute ListaClientes lista;
void registrar_usuario (in ICliente cliente) raises (usuarioRegistrado);
IConversacion crear_conversacion (in ICliente cliente);
ListaClientes obtener_lista();
void dar_baja(in ICliente cliente);
};
然后我得到分段错误的代码部分就是这个:
ListaClientes* Server_i::obtener_lista() {
return userList._retn();
}
其中:
ListaClientes_var userList=new ListaClientes(size);
或者:
ListaClientes* userList=new ListaClientes(size);
ListaClientes* Server_i::obtener_lista() {
return userList;
}
答案 0 :(得分:2)
应该是
ListaClientes* Server_i::obtener_lista() {
ListaClientes_var my_list = new ListaClientes(size);
my_list->length (size);
// Fill the elements in the newly created sequence by doing a duplicate of each object reference as it exists in the member variable
for(CORBA::ULong i=0;i<userList->length();i++){
my_list[i] = ICliente::_duplicate(userList[i]);
}
return my_list._retn();
}