试图从视觉工作室的第一个表单调用第二个表单

时间:2015-05-12 16:06:08

标签: winforms visual-studio c++-cli

我试图在visual studio中从 MyForm 中调用 Form2

#include "Form2.h"
#pragma once

...

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2^ xx = gcnew Form2();
    xx->ShowDialog();
}

但是我收到了错误:

  

标识符" Form2"未定义

我不明白为什么。我已经包含了#34; Form2.h"在MyForm.h中。 怎么解决?

1 个答案:

答案 0 :(得分:1)

我猜你在Form2.h中有#include "MyForm.h"

您需要做的是将所有方法内容移出.h文件,并将它们放在.cpp文件中。完成后,您应该能够将.h中的许多#include语句移动到.cpp。

通过#including彼此的两个头文件,你最终会遇到这样的情况。 #pragma曾经破坏了递归,但无论哪一个最终被编译都不会看到另一个,因为它会在后处理文件中出现。通过只将类定义留在头文件中,并将内容移动到.cpp文件中,现在头文件不需要互相引用,只有.cpp需要引用两个头文件,所以一切都编译好了干净。