|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.04.2017, 18:14 | #1 |
Регистрация: 19.04.2016
Сообщений: 5
|
Функции в с++, как писать в .срр и .h файлах
Всем привет! Подскажите, пожалуйста, как правильно описывать функции...я новичок
Это .срр- файл... TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { generateData(); system("pause"); } //--------------------------------------------------------------------------- AnsiString __fastcall generateData() { // тело функции....... } Это .h- файл class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); AnsiString generateData(); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif При компиляции выдает ошибку: [Linker Error] Unresolved external 'TForm1::generateData()' referenced from C:\USERS\USER\DESKTOP\UNIT1.OBJ Ошибок в коде нет...Поэтому вопрос, верно ли описаны функции в этих файлах?Сама структура... И с чем может быть связана ошибка? В интернете не могу найти ответа Заранее спасибо! |
18.04.2017, 18:37 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,713
|
Код:
|
18.04.2017, 19:07 | #3 |
Регистрация: 19.04.2016
Сообщений: 5
|
Спасибо за помошь! Но теперь такие ошибки...
[C++ Error] Unit1.cpp(28): E2356 Type mismatch in redeclaration of 'TForm1::generateData()' [C++ Error] Unit1.h(17): E2344 Earlier declaration of 'TForm1::generateData()' |
18.04.2017, 19:22 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Ну, то у вас есть fastcall, то у вас его нет...
|
18.04.2017, 19:28 | #5 |
Регистрация: 19.04.2016
Сообщений: 5
|
Так есть же все..
|
18.04.2017, 19:31 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Не знаю, я смотрю на первый пост...
|
18.04.2017, 19:35 | #7 |
Регистрация: 19.04.2016
Сообщений: 5
|
А вы не знаете, в чем тут дело? Как устранить ошибки...
|
18.04.2017, 20:10 | #8 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Ошибки из не понимания сути. А билдер вам автоматом "чтото" делает.
Суть такова, есть 2 разные вещи - объявление и определение. Объявление дает знать что, как-то может выглядеть, например Код:
Определения исторически помещаются в список в h файлах, т.е. такие файлы - это списки обещаний и как кого узнавать для компилятора. Объявления конкретно делают вещи и их прототип ("лицо") должны точно совпадать с обещаниями (определенеями), т.е. Код:
....я не совсем силен в терминах, м.б определение-объявление (слова!) следует тут поменять местами. Но суть такова. .т.е. в ошибке компилятор говрит вам, что контракт обещаний (h файл) не выполнен ровно 1 раз в cpp файлах. В самом последнем скрине компилятор говорит, что вы "изменяете контракт", но он отличен от исходного ( так нельзя, контракты должны совпадать, но каждый новый говорит, что вы дадите новое определение в новом в cpp файле). Под новым и старым следует понимать наследование. Старое, это что изначально компилер знает "TForm", а новое - что вы пишите. Что конкретно "старое", а что "новое" указанов контракте h файла, в cpp файле вы "исполняете контракт". Т.о. последняя ошибка говрит что, "мы исполняем котракт TForm1, но то что вы исполняете - вне контракта, такого не обсуждали". Варианты исправления - "добавить в контракт" (h файл) или менять написание так, чтоб соответствовало контракту из h файла. раз зашло уж... private: protected: public: 1 случай ток я могу требовать исполнение 2 я и мои дети -внуки могут требовать 3 все могут требовать Последний раз редактировалось alexzk; 18.04.2017 в 20:43. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Надо писать функцию для нелинейности одной булевой функции за деньги | lampard90 | Фриланс | 0 | 08.05.2014 16:09 |
Исправление ошибки в коде срр! | AlekCaHdpyLLlka | Помощь студентам | 2 | 24.05.2012 19:50 |
C++. Две функции в разных файлах мешают друг другу. | Крот | Помощь студентам | 13 | 21.03.2012 14:56 |
Построение матрицы на Срр. | Zerder | Помощь студентам | 6 | 28.10.2011 21:11 |
помогите с модульным методом программирования(функции в отдельных файлах) | pavelstraut | Общие вопросы C/C++ | 11 | 20.07.2009 20:52 |