我在Windows窗体中定义C ++事件函数时遇到问题。
我想在单独的.cpp文件中定义我的事件函数(例如:按钮单击),而不是在windows窗体.h文件中完成所有函数定义,这些函数定义已经为windows窗体GUI生成了代码。
我试过这样做, Form1.h类中的声明:
private: System::Void ganttBar1_Paint
(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e);
这是Form1.cpp类中的定义:
#include "Form1.h"
System::Void Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
// Definition
}
当我这样做时,我在.cpp文件中遇到编译器错误,说它不是类或命名空间名称。
如何在seprate文件中获取事件函数的定义和声明?
我只是愚蠢而且在这里缺少一些东西,还是我必须以不同于C ++标准的方式做这些事情?
答案 0 :(得分:4)
您的类定义很可能位于某个命名空间内(我将Project1
用作占位符):
#pragma once
namespace Project1
{
ref class Form1 : public System::Windows::Forms::Form
{
// ...
};
}
因此,您的定义也必须如此:
#include "Form1.h"
namespace Project1
{
void Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
// definition
}
}
或
#include "Form1.h"
void Project1::Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
// definition
}