0

大家好,我是 Visual C++ 的新手,但不是 C++。我在试图弄清楚如何显示/隐藏表单时遇到问题。

假设我有一个表单 Form1 和另一个表单 TestForm。在 Form1.h 的按钮单击功能中,我有代码:

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

它工作正常。我单击按钮,Form1 消失,TestForm 出现。但是,如果我在 TestForm.h 中做同样的事情(只是更改设置为出现/消失的表单),我会在 Form1.h(曾经工作)和 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''
4

1 回答 1

2

问题很可能是由于您将标头包含到 .cpp 文件中的顺序。在原始情况下,当您在 Form1.cpp 中工作时,“TestForm”是包含 Form1.h 之前的已知类型。一旦您切换头文件将调用您的方法,情况就不再如此了。

我建议将您的事件处理程序(按钮单击功能)移动到您的 .cpp 文件中。您的 .cpp 文件可以同时包含这两个标头,并且无论您包含标头的顺序如何,编译器都会适当地找到表单定义及其方法。

于 2010-06-21T20:58:50.000 回答