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
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
En realidad es sin el asterisco (*)...
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.
Sii , pero si no le coloco el * en la definicion el compilador me manda al africa :silbar:
Solo así compila bien :-\
int *punt::a = NULL;
¿Como es a la final? :huh:
Al parecer solo puedes acceder a punteros de manera privada en las clases de esta manera:
#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.
Cita de: naderST en 5 Agosto 2011, 07:09 AMEn realidad es sin el asterisco (*)...
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
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:
int* punt::a;
o
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)
Gracias !! ya me quedo claro ::)
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!¡.