Autor
|
Tema: Mientro static dentro de clase static, simbolo externo sin resolver (Leído 3,302 veces)
|
patilanz
Desconectado
Mensajes: 481
555-555-0199@example.com
|
Hola, en este código class mainMenu{ public: static enum menuResult { Nothing, Play, Instruction, About, Exit }; static class menuItem{ public: menuItem(char * name = ""); menuItem(char * name, mainMenu::menuResult action); char * name; mainMenu::menuResult action; sf::Rect<int> rect; int fontSize = 24; void draw(sf::RenderWindow & window); static mainMenu * mainMenuPointer; // problem private: bool created = false; // draw items sf::Text text; sf::RectangleShape outline; }; std::vector<menuItem> items; sf::Font font; void drawItems(sf::RenderWindow & window); //menuResult handleClick(); };
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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 481
555-555-0199@example.com
|
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 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
Mensajes: 3.412
ASMático
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pregunta tonta [ Each & Static ]
« 1 2 »
Programación Visual Basic
|
Sancho.Mazorka
|
14
|
4,108
|
23 Junio 2007, 18:39 pm
por Hans el Topo
|
|
|
Singleton, static y herencia
Java
|
ҒrεακΠιи∂
|
1
|
5,267
|
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
|
11 Enero 2015, 16:28 pm
por wibo99
|
|
|
Pasar argumentos a WinMain
Programación C/C++
|
Borito30
|
2
|
2,125
|
26 Marzo 2017, 20:59 pm
por fary
|
|
|
Error de simbolo externo sin resolver (MSVS)
Programación C/C++
|
digimikeh
|
4
|
2,329
|
7 Marzo 2019, 18:24 pm
por K-YreX
|
|