我正在使用Visual C ++ 2010编程。我有一个example.h example.cpp和Form1.h。 基本上,我已经粘贴了一些代码。我无法在example.h文件中包含Form1.h,不知道为什么。但主要问题是如何从example.cpp调用Test(在form1.h中)?语法是什么?有可能这样做吗?
My Form1.h
#include "example.h"
public ref class Form1 : public System::Windows::Forms::Form
{
public: void Test(void)
{
// Does something
}
}
我的example.cpp
#include "example.h"
#include "Form1.h"
Test(); // would like to call Test from here.
答案 0 :(得分:1)
这里有两个问题:
你必须从另一个函数内部调用函数。您目前在example.cpp
文件中的代码无效,因为您尝试在全局范围内调用Test()
函数。
让它看起来像这样:
int main()
{
Test();
return 0;
}
这也解决了您没有main
函数的问题,这是任何C ++应用程序的入口点。
更一般地说,我会 强烈 建议使用Visual Studio附带的一个项目模板来开始(而不是复制和粘贴代码的随机位,比如你说)。这确保您拥有入门所需的所有内容,例如入口点。一旦你有了坚实的基础,你就可以从那里开始建立。
您可能还会发现获得有关C ++ / CLI的书籍或在线教程(例如:Hello C++/CLI, Part 1和Hello C++/CLI, Part 2)非常有用。
您的Test
函数是Form1
类的成员函数,这意味着您需要该类的对象才能调用它。因此,代码应该看起来像这样:
int main()
{
Form1^ frm = gcnew Form1();
frm.Test();
return 0;
}
或者,您可以通过使Test()
函数成为static
函数来解决此问题。这将允许您在没有类的实例的情况下调用它:
public ref class Form1 : public System::Windows::Forms::Form
{
public: static void Test(void)
{
// Does something
}
}
// ...
int main()
{
Form1::Test();
return 0;
}
但是,请注意,这意味着您无法访问Form1
函数内Test()
类的任何其他成员(因为没有this
指针)。
这应该在你决定用来学习C ++ / CLI的任何书籍/教程中解释所有关于" Classes"或者"面向对象的设计"。