Компилятор C ++ (XE7) Builder Ошибка 2315 при доступе к автоматически созданному модулю данных в файле Project cpp - PullRequest
0 голосов
/ 04 сентября 2018

Я конвертирую старый проект, написанный на Delphi 7, в C ++ Builder (XE7).

В файле проекта Delphi 7 я могу легко получить доступ к автоматически созданным формам и модулям данных, используя их ссылки. но в 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();

Какой обходной путь для решения этой проблемы?

1 Ответ

0 голосов
/ 05 сентября 2018

Для того, что вы пытаетесь, вам нужно добавить оператор #include для заголовочного файла TDM1 в ваш основной файл проекта. В C ++ Builder автоматически созданный Form / DataModule по умолчанию просто объявляется в основном файле проекта только для удовлетворения ссылки на CreateForm(). Но для доступа к любым членам вам необходим доступ к полному объявлению класса.

При этом, учитывая код, который вы показали, вызов con1->Open() должен быть перемещен в конструктор TDM1, поэтому он вызывается автоматически при вызове CreateForm(&DM1). Тогда вам не нужно знать полный тип TDM1 в основном файле проекта.

...