elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  DUDA invalid use of non-static member
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA invalid use of non-static member  (Leído 2,403 veces)
hari

Desconectado Desconectado

Mensajes: 51



Ver Perfil
DUDA invalid use of non-static member
« en: 30 Junio 2011, 17:39 pm »

Hola,
estaba haciendo un sencillo programa en el cual necesitaba crear una estructura, la he creado en el .h y he puesto:
struct cabecera {
   int PosInicioMarca;
   int LongMarca;
   char Marca[LongMarca*sizeof(char)];
   char Comentario[100*sizeof(char)];
};

Al compilarlo me da los siguientes errores:
invalid use of non-static member 'cabecera::LongMarca'
array bound is not an integer constant before ']' token make: ***[obj/main] Error 1


Muchas gracias.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: DUDA invalid use of non-static member
« Respuesta #1 en: 30 Junio 2011, 18:38 pm »

No puedes hacer eso, ya que LongMarca no tiene un valor inicial. Además de que sería mejor que utilizaras un puntero al tipo que utilizas.

Código
  1. struct cabecera {
  2.   int PosInicioMarca;
  3.   int LongMarca;
  4.   char *Marca; //[LongMarca*sizeof(char)];
  5.   char *Comentario; //[100*sizeof(char)];
  6. };

ó

Código
  1. struct cabecera {
  2.   int PosInicioMarca;
  3.   int LongMarca;
  4.   char Marca[VALOR];
  5.   char Comentario[VALOR];
  6. };

No necesitas utilizar el operador sizeof() puedes asignarle el valor directamente sin "calcularlo".

Un ejemplo usando asignación dinámica de memoria:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct cabecera {
  5.   int PosInicioMarca;
  6.   int LongMarca;
  7.   char *Marca; //[LongMarca*sizeof(char)];
  8.   char *Comentario; //[100*sizeof(char)];
  9. };
  10.  
  11. int main(void)
  12. {
  13.    struct cabecera tmp;
  14.    tmp.LongMarca = 10;
  15.  
  16.    /* Les asignamos espacio en memoria a las cadenas */
  17.    tmp.Marca = malloc(sizeof(char) * tmp.LongMarca);
  18.    tmp.Comentario = malloc(sizeof(char) * 100);
  19.  
  20.    /* Proceso ... */
  21.  
  22.    /* Liberación de la memoria ocupada */
  23.    free(tmp.Marca);
  24.    free(tmp.Comentario);
  25.  
  26.    return 0;
  27. }
  28.  


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
hari

Desconectado Desconectado

Mensajes: 51



Ver Perfil
Re: DUDA invalid use of non-static member
« Respuesta #2 en: 30 Junio 2011, 19:13 pm »

Muchas gracias, me has sido de gran utilidad, ya sigo avanzando con el programa.

 ;-) ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PsykoHaxor New Member
Sugerencias y dudas sobre el Foro
psykohaxor 5 2,836 Último mensaje 5 Diciembre 2005, 03:27 am
por | Zeden |
Pregunta tonta [ Each & Static ] « 1 2 »
Programación Visual Basic
Sancho.Mazorka 14 4,096 Último mensaje 23 Junio 2007, 18:39 pm
por Hans el Topo
Duda ejercicio java variable static
Java
beginner6 5 2,992 Último mensaje 11 Noviembre 2014, 18:09 pm
por beginner6
[Solucionado] std::thread error: invalid use of non-static member function
Programación C/C++
MeCraniDOS 4 5,568 Último mensaje 19 Abril 2015, 16:37 pm
por MeCraniDOS
invalid use of member ' ' in static member function
Programación C/C++
CBFD 3 3,395 Último mensaje 22 Junio 2016, 13:11 pm
por CBFD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines