我认为这里的问题是你不明白为什么一切都是 c++ 世界中的样子。假设您想创建一个具有函数 Bar 的 Foo 类,您只需执行此操作非常简单
class Foo
{
void Bar(){/*code*/}
};
现在你在一个文件中有 Foo 类,但你还需要一个必须在另一个文件中的 Baz 类。你不能移动 Foo,所以 C++ 有#include 系统。这样,您可以将 Foo 放在一个文件中,将 Baz 放在另一个文件中,并且仍然可以同时使用它们。一个理论上的例子可能是:
#include "Foo.h"
class Baz
{
Foo* foo;
};
编译器会这样翻译(现在考虑 Foo.h 包含我之前写的内容):
class Foo
{
void Bar(){/*code*/}
};
class Baz
{
Foo* foo;
};
但是由于多种原因,这是非常低效的,首先,如果我们保留这样的所有内容,那么每次您在其他地方#included 文件时,编译器都必须编译相同的内容,因此 C++ 有另一种机制可以让您告诉类 Foo 存在于其他地方的编译器,它将在未来可用,它看起来有点像这样,所以当你在 C++ 中创建一个类时,你使用 .h 文件来描述它的外观并将实现保留在 cpp文件。在这种情况下,它看起来像这样:
//Foo.h
class Foo
{
void Bar();
};
//Foo.cpp
#include "Foo.h"
void Foo::Bar(){/*code*/}
//Baz
#include "Foo.h"
class Foo
{
void Bar(){/*code*/}
};
所以 TLDR,您需要做的是删除函数定义,将其保留为
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
并且在cpp文件中有
System::Void Form1::button1_Click(System::Object^ sender, System::EventArgs^ e)
{
bool result = function();
}