palabra - Ayuda de la función estática C++
variable static c# (2)
No puedo superar este problema que estoy teniendo. Aquí hay un ejemplo simple:
class x
{
public:
void function(void);
private:
static void function2(void);
};
void x::function(void)
{
x::function2(void);
}
static void function2(void)
{
//something
}
Recibo errores en los que me quejo de que function2 es privada. Si lo hago público (lo que realmente no quiero hacer) obtengo errores sobre una referencia indefinida a function2. ¿Qué estoy haciendo mal? ¡Gracias!
No se puede tener una declaración de función y definición tanto en una clase. Mueva las definiciones fuera de la clase o elimine las declaraciones.
No se puede llamar a una función con un vacío como parámetro. Eso se usa sólo en la declaración.
La definición de la función para function2 si está fuera de la clase necesitará ax :: qualifier y static no es necesaria la segunda vez.
class x
{
public:
void function(void);
private:
static void function2(void);
};
void x::function(void)
{
x::function2();
}
void x::function2(void)
{
}
Debes definir function2
con
static void x::function2 (void)
{
body
}
como lo fue con x::function
actualización: sí. no es necesario marcar el método de clase con estática al definirlo.
class x
{
public:
void function(void);
private:
static void function2(void);
}; //end of class
// here are definitions of members
static void x::function(void)
{
x::function2();
}
static void x::function2(void)
{
//something
}