Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
class punt
 {
     public:
         static int *a;
 };

// la forma de definirlo era asi
int *punt::a = NULL;

// Y no
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 (cpp) [Seleccionar]

int punt::a = NULL;


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 (cpp) [Seleccionar]

int *punt::a = NULL;


¿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 (cpp) [Seleccionar]

#include <iostream>

using namespace std;

class punt {
    private:
    int * ptr;

    public:
    void numero(int * num){
        ptr = num;
    }

    int obtNumero(){
        return *ptr;
    }
};

int main()
{
    int num = 10;
    punt a;
    a.numero(&num);
    cout << "Contenido del puntero: " << a.obtNumero() << endl;
    return 0;
}



Tienes que crear el objeto y demás.
Título: Re: Punteros estaticos , Existen ¿?
Publicado por: Karman en 9 Agosto 2011, 05:48 AM
Cita de: naderST en  5 Agosto 2011, 07:09 AMEn realidad es sin el asterisco (*)...

Código (cpp) [Seleccionar]

int punt::a = NULL;


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:

Cita de: skorpion32 en  4 Agosto 2011, 10:34 AMHola , 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 (cpp) [Seleccionar]
class punt
 {
     public:
         static int *a;
 };

// la forma de definirlo era asi
int *punt::a = NULL;

// Y no
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 (cpp) [Seleccionar]
int* punt::a;

o

Código (cpp) [Seleccionar]
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
Cita de: naderST en  7 Agosto 2011, 07:29 AM
Al parecer solo puedes acceder a punteros de manera privada en las clases de esta manera:

Existen tambien los procesos friend...

Temibles Lunas!¡.