elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mientro static dentro de clase static, simbolo externo sin resolver
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mientro static dentro de clase static, simbolo externo sin resolver  (Leído 3,302 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Mientro static dentro de clase static, simbolo externo sin resolver
« en: 7 Septiembre 2016, 23:27 pm »

Hola,
en este código
Código
  1. class mainMenu{
  2. public:
  3. static enum menuResult { Nothing, Play, Instruction, About, Exit };
  4. static class menuItem{
  5. public:
  6. menuItem(char * name = "");
  7. menuItem(char * name, mainMenu::menuResult action);
  8. char * name;
  9. mainMenu::menuResult action;
  10. sf::Rect<int> rect;
  11. int fontSize = 24;
  12. void draw(sf::RenderWindow & window);
  13.  
  14. static mainMenu * mainMenuPointer; // problem
  15. private:
  16. bool created = false;
  17. // draw items
  18. sf::Text text;
  19. sf::RectangleShape outline;
  20. };
  21.  
  22. std::vector<menuItem> items;
  23.  
  24. sf::Font font;
  25. void drawItems(sf::RenderWindow & window);
  26. //menuResult handleClick();
  27. };
  28.  
  29.  
  30.  

La variable mainMenuPointer o cualquier variable estática dentro de la clase estática menuItem muestra el error de símbolo externo sin resolver 2001 en visual studio 2013
Alguien sabe porqué?

Un saludo


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Mientro static dentro de clase static, simbolo externo sin resolver
« Respuesta #1 en: 8 Septiembre 2016, 08:35 am »

Los problemas se resume en que en C++, el uso de la palabra static no es el mismo que en Java. En C++ no puedes tener clases estáticas usando static al principio de la clase. La palabra static en C++ solo se puede poner detrás de la declaración y definición de variables o métodos (hablando dentro de POO). Por ello, tampoco puedes hacer static enum menuResult [...]; Eso no está permitido


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Mientro static dentro de clase static, simbolo externo sin resolver
« Respuesta #2 en: 8 Septiembre 2016, 14:09 pm »

Los problemas se resume en que en C++, el uso de la palabra static no es el mismo que en Java. En C++ no puedes tener clases estáticas usando static al principio de la clase. La palabra static en C++ solo se puede poner detrás de la declaración y definición de variables o métodos (hablando dentro de POO). Por ello, tampoco puedes hacer static enum menuResult [...]; Eso no está permitido

Lo raro es que
Código
  1. static enum menuResult { Nothing, Play, Instruction, About, Exit };
si que funciona


En realidad lo que intento hacer es que una vez creada la clase A, todos los objetos con tipo clase B creados tengan un puntero apuntando a clase A sin necesidad de asignar la dirección en cada objeto nuevo creado
« Última modificación: 8 Septiembre 2016, 15:36 pm por patilanz » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Mientro static dentro de clase static, simbolo externo sin resolver
« Respuesta #3 en: 8 Septiembre 2016, 16:15 pm »

Bueno, static no es la palabra que buscas, es todo. static de hecho, hace algo totalmente opuesto a lo que buscas. Los miembros declarados como static no pertenecen a cada objeto, sino que pertenecen a la clase en sí.

En cualquier caso, una opción es poner una función en la clase menuItem que agregue el elemento al vector y que le asigne su dirección.
A menuItem le quitarías la palabra static, y lo pondrías fuera o dentro de la clase mainMenu, como quieras.
Luego, mainMenuPointer no puede ser static. Si es static, al cambiarlo, "cambiará en todos los objetos menuItem". Eso significa que funcionaría si solo quisieras tener 1 único mainMenu.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta tonta [ Each & Static ] « 1 2 »
Programación Visual Basic
Sancho.Mazorka 14 4,108 Último mensaje 23 Junio 2007, 18:39 pm
por Hans el Topo
Singleton, static y herencia
Java
ҒrεακΠιи∂ 1 5,267 Último mensaje 30 Abril 2008, 05:58 am
por JWizard
LINK : error LNK2001: símbolo externo _mainCRTStartup sin resolver
Programación C/C++
wibo99 0 3,412 Último mensaje 11 Enero 2015, 16:28 pm
por wibo99
Pasar argumentos a WinMain
Programación C/C++
Borito30 2 2,125 Último mensaje 26 Marzo 2017, 20:59 pm
por fary
Error de simbolo externo sin resolver (MSVS)
Programación C/C++
digimikeh 4 2,329 Último mensaje 7 Marzo 2019, 18:24 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines