Prediga la salida del siguiente programa C++.
#include <iostream> using namespace std; class A { private: int x; public: A(int _x) { x = _x; } int get() { return x; } }; class B { static A a; public: static int get() { return a.get(); } }; int main(void) { B b; cout << b.get(); return 0; }
(A) 0
(B) Error del vinculador: Referencia indefinida B::a
(C) Error del vinculador: No se puede acceder a una estática
(D) Error del vinculador: múltiples funciones con el mismo nombre get()
Respuesta: (B)
Explicación: Hay un error del compilador porque el miembro estático a no está definido en B.
Para corregir el error, necesitamos definir explícitamente a. El siguiente programa funciona bien.
#include <iostream > using namespace std; class A { private: int x; public: A(int _x) { x = _x; } int get() { return x; } }; class B { static A a; public: static int get() { return a.get(); } }; A B::a(0); int main(void) { B b; cout << b.get(); return 0; }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA