我正在将用Delphi 7编写的旧项目转换为C ++ Builder(XE7)。
在Delphi 7项目文件中,我可以使用它们的引用轻松访问自动创建的Forms和DataModule。但是在C ++ Builder中,当我做同样的事情时,会出现此错误:
E2315'con1'不是'TDM1'的成员,因为尚未定义类型。
这是c ++项目文件的一部分:
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->CreateForm(__classid(TDM1), &DM1);
DM1->con1->Open();//ERROR 2315
Application->Run();
解决此问题的解决方法是什么?
答案 0 :(得分:1)
对于您要尝试的操作,您需要在主项目文件中为#include
的头文件添加一个TDM1
语句。在C ++ Builder中,默认情况下,仅在主项目文件中预先声明了自动创建的Form / DataModule,仅是为了满足CreateForm()
的引用。但是,为了访问任何成员,您需要访问完整的类声明。
话虽如此,给定您所显示的代码,对con1->Open()
的调用应改为移至TDM1
的构造函数,因此在调用CreateForm(&DM1)
时会自动调用它。然后,您不需要知道主项目文件中的TDM1
的完整类型。