Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: skorpion32 en 4 Agosto 2011, 10:34 am



Título: Punteros estaticos , Existen ¿?
Publicado por: skorpion32 en 4 Agosto 2011, 10:34 am
Hola , al intentar solucionar un problema de un puntero que uso con muchos objetos, lo puse estatico pero el compilador no me deja siquiera definirlo .

Sera que el operador static no puede ser aplicado a un puntero ?¿

EDIT: Me autorespondo . Ya encontré como solucionarlo , era algo muy simple....

si tenia un miembro estatico como puntero ej
 
Código
  1. class punt
  2.  {
  3.      public:
  4.          static int *a;
  5.  };
  6.  
  7. // la forma de definirlo era asi
  8. int *punt::a = NULL;
  9.  
  10. // Y no
  11. int punt::*a;  // Como estaba intentando  :¬¬

 ;D



Título: Re: Punteros estaticos , Existen ¿?
Publicado por: naderST en 5 Agosto 2011, 07:09 am
En realidad es sin el asterisco (*)...

Código
  1. int punt::a = NULL;
  2.  

Ahí asignas que el puntero es NULL osea que no apunta a nada, en tu caso estabas asignando que el valor de la dirección donde apunta es NULL.


Título: Re: Punteros estaticos , Existen ¿?
Publicado por: skorpion32 en 7 Agosto 2011, 05:27 am
Sii , pero si no le coloco el * en la definicion el compilador me manda al africa  :silbar:

Solo así compila bien  :-\

Código
  1. int *punt::a = NULL;
  2.  

¿Como es a la final?  :huh:


Título: Re: Punteros estaticos , Existen ¿?
Publicado por: naderST en 7 Agosto 2011, 07:29 am
Al parecer solo puedes acceder a punteros de manera privada en las clases de esta manera:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class punt {
  6.    private:
  7.    int * ptr;
  8.  
  9.    public:
  10.    void numero(int * num){
  11.        ptr = num;
  12.    }
  13.  
  14.    int obtNumero(){
  15.        return *ptr;
  16.    }
  17. };
  18.  
  19. int main()
  20. {
  21.    int num = 10;
  22.    punt a;
  23.    a.numero(&num);
  24.    cout << "Contenido del puntero: " << a.obtNumero() << endl;
  25.    return 0;
  26. }
  27.  
  28.  

Tienes que crear el objeto y demás.


Título: Re: Punteros estaticos , Existen ¿?
Publicado por: Karman en 9 Agosto 2011, 05:48 am
En realidad es sin el asterisco (*)...

Código
  1. int punt::a = NULL;
  2.  

Ahí asignas que el puntero es NULL osea que no apunta a nada, en tu caso estabas asignando que el valor de la dirección donde apunta es NULL.

antes de tratar "enseñar" a los demás deberías leer un poco  :silbar:

Hola , al intentar solucionar un problema de un puntero que uso con muchos objetos, lo puse estatico pero el compilador no me deja siquiera definirlo .

Sera que el operador static no puede ser aplicado a un puntero ?¿

EDIT: Me autorespondo . Ya encontré como solucionarlo , era algo muy simple....

si tenia un miembro estatico como puntero ej
 
Código
  1. class punt
  2.  {
  3.      public:
  4.          static int *a;
  5.  };
  6.  
  7. // la forma de definirlo era asi
  8. int *punt::a = NULL;
  9.  
  10. // Y no
  11. int punt::*a;  // Como estaba intentando  :¬¬

 ;D

La sintaxis de los miembros estáticos es: "<type> <class_name>::<static_variable>;" o "<type> <class_name>::<static_variable> = <value>;" si quieres darle un valor inicial, por lo tanto en tu caso quedaría:

Código
  1. int* punt::a;

o

Código
  1. int* punt::a=NULL;

S2

EDIT: con respecto al acceso, sigue las mismas reglas que los miembros no estáticos (solo para miembros, no para métodos estáticos)


Título: Re: Punteros estaticos , Existen ¿?
Publicado por: skorpion32 en 9 Agosto 2011, 06:39 am
Gracias !! ya me quedo claro  ::)


Título: Re: Punteros estaticos , Existen ¿?
Publicado por: BlackZeroX en 12 Agosto 2011, 07:00 am
Al parecer solo puedes acceder a punteros de manera privada en las clases de esta manera:

Existen tambien los procesos friend...

Temibles Lunas!¡.