variable palabra funciones funcion estaticas estatica ejemplos clase c++ static-functions

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!


  1. 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.

  2. No se puede llamar a una función con un vacío como parámetro. Eso se usa sólo en la declaración.

  3. 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 }