![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Yo utilizo C++ Builder y no tengo problemas para pasar como parametro una estructura o clase, sólo hay que cuidar de un buen diseño de los archivos cabecera para que no existan errores de tipo "no declarado" o "declarado dos veces" y pensar si el parámeytro lo pasamos por valor o por referencia.
En VCL, todos los componentes son punteros, y eso conviene nenerlo en cuenta para no mometer los clásicis errores del programador de C con los punteros. Si lo que quieres pasar como parámetro es un array, éste realmente es un puntero. Si pasas el valor de dicho puntero, realmente estas pasando el valor del primer elemento del array, que lógicamante es de otro tipo: char *A es un Array de tipo char pero realmente es un "puntero de tipo char". Sinembargo *A es un char, y es el primer char del array A. Saludos. Última edición por escafandra fecha: 30-11-2007 a las 15:59:37. |
|
#2
|
|||
|
|||
|
Hola escafandra, pues entonces se me está escapando algun pequeño detalle porque he cambiado el nombre mil veces y sigue dandome el mismo error, incluso cierro todo el proyecto, empiezo uno en blanco y tampoco me deja pasar como parámetro una estructura, mejor dicho, la estructura me deja pasarla, lo que no me deja es definir la funcion cuyo parámetro es una estructura
si por ejemplo tengo: struct Estructura{ AnsiString var1; int var2; } el problema me lo da a continuación, ya que si defino una funcion como esta me da error: void Funcion(int a; Estructura b){ .... } ¿qué puedo estar haciendo mal? un saludo, muchas gracias |
|
#3
|
||||
|
||||
|
¿La definición de estructura esta en un archivo cabecara?
Si es así, ese archivo cabacera debe estar incluido antes de la deficición de Funcion. Si no es así y está en el mismo archivo que define Funcion, entonces debe estas definida antes que Funcion. Si pasas Estructura como Funcion(int a, Estructura b), la estas pasando por valor, es decir b, no sera modificada por Funcion a la vuelta. Pero si Funcion la defines como Funcion(ina a, Estructura &b), entonces la pasas por referencia y cualquier modificación que realice Funcion sobre b, se reflerará a la vuelta. Al Pasar por valor, lo que pasa es que pasas una copia de tu parámetro, cosa que no ocurre asi al pasarlo por referencia. Saludos Última edición por escafandra fecha: 10-12-2007 a las 18:45:31. |
|
#4
|
|||
|
|||
|
ok, gracias por ayudarme, por fin funciona, había que especificar "struct" en la propia definición de función
es decir struct Estructura{ AnsiString var1; int var2; } y en la definición de función void Funcion(int a; struct Estructura b){ ... } gracias, un saludo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar datos entre forms | Stanley | Varios | 3 | 06-11-2007 20:26:44 |
| pasar un tipo de datos (array of record) entre aplicaciones | mauqu | Varios | 4 | 26-10-2007 20:04:31 |
| compartir un array de estructuras entre aplicaciones | mauqu | Varios | 1 | 25-10-2007 23:01:32 |
| Pasar datos entre forms | Phacko | Varios | 8 | 20-09-2007 23:58:08 |
| Pasar variable o valor entre forms | nachito_tuc | OOP | 3 | 05-09-2006 14:06:41 |
|