作为一名php开发人员,在做了很多算法c ++练习后,我决定开始学习Visual C ++。刚开始之后我就陷入了非常基本的困境。我试图从.h文件中将Button-click事件解压缩到我的.cpp文件。
我的.h文件:
#pragma once
namespace Project1 {
...
this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click);
...
}
在我的.cpp文件中,我试过这样做:
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
namespace Project1 {
[STAThread]
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
...
}
它不起作用。它说Project1 :: MyForm没有button2_Click。我错过了什么?
答案 0 :(得分:1)
标准'学习语言'警告:这不是你正在编写的C ++,它是C ++ / CLI。 C ++ / CLI是Microsoft的一种语言,旨在允许C#或其他.Net语言与标准C ++进行交互。在这种情况下,C ++ / CLI可以提供两者之间的转换。如果您还在学习C ++,请不要从C ++ / CLI开始。为了在C ++ / CLI中有效地编写,人们应该已经知道C ++和C#,然后还有关于C ++ / CLI的东西要学习。如果你想学习C ++,坚持使用标准(非托管)C ++。 (在Visual Studio中,创建一个“Win32”C ++项目。)如果您想学习托管代码,那么我会使用C#。
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
}
这不是你如何定义方法:你已经在另一个方法的定义中得到了一个方法的定义,而这是不允许的。
你需要做的是在MyForm.h中声明button2_Click方法,并在MyForm.cpp中实现它的实现
// MyForm.h
public ref class MyForm : System::Windows::Forms::Form
{
// Lots of other stuff...
private:
void button2_Click(System::Object^ sender, System::EventArgs^ e);
}
// MyForm.cpp
#include "MyForm.h"
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e)
{
// definition
}