Pregunta

Hola chicos, soy nuevo a Visual C ++, pero no en C ++. Estoy teniendo problemas tratando de encontrar la manera de mostrar / ocultar formas.

Vamos a decir que tienen un formulario Form1 y otra forma TestForm. En función de clic de botón en Form1.h tengo el código:

Form1::Hide();
TestForm^ form = gcnew TestForm();
form->Show();

Y funciona bien. Hago clic en el botón, y Form1 desaparece y aparece TestForm. Pero si hago lo mismo en TestForm.h (sólo cambiando el cual se establecen las formas de aparecer / desaparecer) consigo una gran cantidad de errores de compilación tanto en Form1.h (que utiliza para el trabajo) y TestForm.h

  Form1.cpp
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2065: 'Form1' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2061: syntax error : identifier 'Form1'
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(87): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(87): error C2227: left of '->Show' must point to class/struct/union/generic type
          type is ''unknown-type''
  TestForm.cpp
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2065: 'TestForm' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2061: syntax error : identifier 'TestForm'
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(104): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(104): error C2227: left of '->Show' must point to class/struct/union/generic type
          type is ''unknown-type''
¿Fue útil?

Solución

El problema es más probable debido al orden en el que está incluida en las cabeceras de los archivos .cpp. En el caso original, cuando trabajaba en Form1.cpp, "TestForm" era un tipo conocido antes se incluyó Form1.h. Tan pronto como se cambia los archivos de cabecera harán sus llamadas a métodos, este no es el caso más.

Yo recomiendo mover los controladores de eventos (las funciones de los botones de clic) para sus archivos .cpp. Sus archivos .cpp pueden incluir tanto las dos cabeceras, y el compilador se encuentran las definiciones de formularios, con sus métodos, apropiadamente, no importa qué orden se incluyen las cabeceras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top