在.net c++中调用父窗体的子窗体函数
Child form calling function on parent in .NET c++
我有一个应用程序与2个winforms: Form1.h和TrackEdit.h。它们都在同一个命名空间("ParkCleanUp2")。
在Form1中我调用这个代码:
ParkCleanUp2::TrackEdit^ te;
它给了我这些错误:
Error 24 error C2039: 'TrackEdit' : is not a member of 'ParkCleanUp2' (TrackEdit.cpp) c:users-joeydocumentsvisual studio 2010projectspark cleanup 2park cleanup 2Form1.h 2332
Error 25 error C2065: 'TrackEdit' : undeclared identifier (TrackEdit.cpp) c:users-joeydocumentsvisual studio 2010projectspark cleanup 2park cleanup 2Form1.h 2332
Error 26 error C2065: 'te' : undeclared identifier (TrackEdit.cpp) c:users-joeydocumentsvisual studio 2010projectspark cleanup 2park cleanup 2Form1.h 2332
但是,如果我去trackedit。h它会显示:
namespace ParkCleanUp2 {
//Some namespae includes
public ref class TrackEdit : public System::Windows::Forms::Form
所以我想知道为什么它会给我错误"'TrackEdit':不是'ParkCleanUp2'的成员",以及为什么它正在查看TrackEdit.cpp文件,而我包含了。h文件。我发现很奇怪,也许重要的是要提到,是当我在TrackEdit.h评论#include "Form1.h
行它只是工作完美,但在TrackEdit.h我不能调用Form1的函数(如在列表框中选择一个项目),我想实现。
看起来您有Form1.h和TrackEdit.h每个#include
-对方。相反,使用前向声明,并且只包含来自TrackEdit的Form1.h。cpp,反之亦然
double-include不起作用,因为两个类都引用了另一个类。为了定义自己,每个类都需要了解其他类。由于您所拥有的只是完整的类定义,因此您得到了一个循环定义。相反,前向声明提供了足够的信息让编译器知道"好吧,有一个类有这个名字,这就是我所知道的",并且循环依赖被解决了。
(另外:当你编辑这个问题时,你删除了最重要的句子:"所以基本上Form1.h包括TrackEdit.h,它又包括Form1.h"。这种模式很少是正确的。如果你看到自己在这样做,提供更多的前向声明。)
像这样:
Form1.h:
namespace ParkCleanUp2 {
ref class TrackEdit;
public ref class Form1 {
TrackEdit^ track;
};
}
TrackEdit.h:
namespace ParkCleanUp2 {
ref class Form1;
public ref class TrackEdit {
Form1^ parentForm;
};
}
Form1.cpp and TrackEdit.cpp:
#include "Form1.h"
#include "TrackEdit.h"
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何在函数中暂停程序,直到用户在窗体上执行某些操作
- 插入运算符的非成员函数窗体
- C++Borland Builder窗体-调用一个函数
- 在调用不同类的函数时刷新 Windows 窗体
- 从另一个函数更改窗体"visible"属性?
- 如何在 Windows 窗体中为事件函数定义使用单独的.cpp文件
- 从Windows窗体类调用PThread到Windows窗体类内的函数
- 将类类型传递给Windows窗体构造函数,并且必须将其强制转换为类指针才能使用它
- 如何在qt构造函数完成执行前显示窗体
- 在c++中从子窗体访问父函数
- 从c#调用DLL c++函数而不阻塞窗体控件
- 在.net c++中调用父窗体的子窗体函数