Asunto: RE: [CORBA-Comp] Warning con 'const'
Fecha: Tue Apr 4 20:04:19 2000
De: "Emilio Hernández Martín" <inkyeto@teleline.es>
Hola.
Lo primero de todo, gracias por solucionarme el problema.
>> int Nombre_clase::Nombre_funcion ( const Clase_param ¶m )
>> {
>> ...
>> String direccion = "mi dirección";
>> direccion += ( param1.Cadena );
>>
>> int new_argc = 2;
>> char **new_argv = new char*[new_argc+1];
>>
>> new_argv[0] = "-ORBNamingAddr";
>> new_argv[1] = direccion; < WARNING AQUÍ.
>> new_argv[2] = 0;
>>
>> myorb = CORBA::ORB_init( new_argc, new_argv, "mico-local-orb" );
>> ...
>> }
>>
>> Al compilar me dice:
>>
>> warning: conversion to `char *' from `const char *' discards const
>>
> En primer lugar ¿qué tipo es String?
Es un objeto de la clase String de STL (del archivo de cabecera 'String.h'
de STL)
> // 1ª solución (más elegante)
> new_argv[2] = new char[direccion.length()+1];
> strcpy(new_argv[2],direccion);
>
> // hacer la llamada...
>
> // Y finalmente, hacer un ...
> delete new_argv[2];
Esta es la solución que adopté. Como decías que era la más elegante... :o)
> Aunque es posible que la operación "strcpy" lance otro "Warning"
Pues no, no ha aparecido ninguno.
-----------------------------------------------------------------------
> UN ÚLTIMO CONSEJO: No utilices directamente new_argv[0], ya que
> normalmente en esa posición está el nombre del ejecutable. El código del
> ORB puede tranquilamente empezar a considerar los argumentos desde
> new_argv[1] sin romper el contrato y tu código no funcionaría. Bien copia
> el primer elemento de tu propio argv o bien introduce en new_argv[0]
> alguna cadena no vacía.
Esto no lo he entendido muy bien. ¿Cómo debería inicializar entonces el
'char **new_argv' de mi ejemplo de arriba?, ¿a partir de 'new_argv[1]' ?
-----------------------------------------------------------------------
Por último, otra pregunta relacionada con la inicialización del ORB.
Si lo quiero inicializar en una función cualquiera y sin necesidad de
argumentos de entrada ( los 'int argc', 'char *argv[]' de 'main()' ), ¿qué
tengo que poner en los 2 primeros parámetro de 'ORB_init()'?, es decir, si
llamamos al método, por ejemplo:
ORB_init( X, Y, "mico-local-orb" )
¿qué valores debo poner en X y en Y para poder llamar a este método desde
una función cualquiera?. ¿Debo definir otros 'int argc' y 'char * argv[]' en
dicho método?, y si fuese así, ¿cómo hago para que estén "vacíos"?
> Espero que esto te ayude.
Ya lo creo.
Muchas gracias.
Y perdonad mi ignorancia.
> Saludos.
> diego.
SalU2.
Emilio.
--------------------------------------------------------------------------
Esta es la lista de discusión de CORBA y Componentes Software (corba-comp)
--------------------------------------------------------------------------
Suscripcion: Envie un correo a mailto:Majordomo@ditec.um.es?body=subscribe%20corba-comp
Eliminar su suscripcion: mailto:Majordomo@ditec.um.es?body=unsubscribe%20corba-comp
Informacion de la lista: mailto:Majordomo@ditec.um.es?body=info%20corba-comp
Problemas: mailto:corba-comp-owner@ditec.um.es
Indices de la lista: http://www.ditec.um.es/~dsevilla/corba/
--------------------------------------------------------------------------