Выпуск № 1355 от 12.07.2009, 13:05
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 629, экспертов - 152
В номере: вопросов - 2, ответов - 3
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170205: Здравствуйте эксперты, подскажите как при нажатии кнопки Button1 сделать так чтобы вызывался метод класс man create. как только не пытался писать: man1->create(); или man1.create(); не получается. ...
Вопрос № 170209: Здравствуйте уважаемые эксперты!Такой вопрос:подскажите как написать консольное приложение для поиска файла по имени,при этом путь к имени файла должен описываться методом construction(string drive),а сам поиск выполняется ,для определённого в к...
Вопрос № 170205:
Здравствуйте эксперты, подскажите как при нажатии кнопки Button1 сделать так чтобы вызывался метод класс man create. как только не пытался писать: man1->create(); или man1.create(); не получается.
Отвечает Victor Pyrlik, Модератор :
Здравствуйте, Tribak. Язык С/С++ конечно свободный, но все же надо придерживаться правил – классы объявляются в заголовочных файлах (с расширением .h) в отличии от Delphi. Во вторых, классы создаются для организации логического контейнера, в котором есть приватные данные и функции – доступные только классу, публичные – внешние данные и функции и другие типы с которыми можно ознакомится более подробно в различных источниках, например тут URL
>>Объектное программирование - классы
По Вашему вопросу – вот пример, немного подправленный, как более правильный подход с точки зрения ООП.
void __fastcall TForm1::Button1Click(TObject *Sender) { man m; m.create(Edit1->Text,Edit2->Text); m.show(Edit3,Edit4); m.pere(); } //------------- другой способ объявления------------------------------ void __fastcall TForm1::Button2Click(TObject *Sender) { man *m = new man(); m->create(Edit1->Text,Edit2->Text); m->show(Edit3,Edit4); delete m; } //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) { man m(Edit1->Text,Edit2->Text);
m.show(Edit3,Edit4); } //--------------------------------------------------------------------------- void __fastcall TForm1::Butt
on2Click(TObject *Sender) { man m; m.SetDate(Edit1->Text,Edit2->Text); m.show(Edit3,Edit4); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { man * m = new man(Edit1->Text,Edit2->Text); m->show(Edit3,Edit4); delete m; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) {
man * m = new man(); m->SetDate(Edit1->Text,Edit2->Text); m->show(Edit3,Edit4); delete m; } //---------------------------------------------------------------------------
Ответ отправил: Victor Pyrlik, Модератор
Ответ отправлен: 06.07.2009, 19:27
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251923
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Dr_Andrew, Модератор :
Здравствуйте, Tribak! Во-первых, замечания по Вашему коду. 1. Вместо метода класса create, принятого в Delphi, в C++ используется конструктор класса - функция, название которой совпадает с именем класса. В отличие от других методов класса, конструктор не возвращает значений, даже void. 2. Для обращения к методам объекта класса используется точка, а для вызова методов указателя на объект класса - стрелочка (->). 3. Указатели на компоненты объявляются в заголовочном файле класса главной
формы, не следует их дополнительно объявлять в модуле реализации формы. 4. Объявление и реализацию собственного класса нужно делать в отдельных файлах, которые затем включать в проект. 5. Вы не написали реализацию конструктора своего класса, но в то же время обращаетесь к нему. 6. Не стоит обращаться к главной форме из собственного класса, напротив, лучше объект(ы) собственного класса сделать членами класса формы. 7. При подключении (куда-либо) собств
енного класса надо пользоваться директивой #include для включения заголовочного файла. В приложении приведён код программы, внешний вид которой представлен на рисунке ниже. При нажатии кнопки "Ввод" происходит создание нового указателя на объект класса TMan с использованием информации из полей ввода. Указатель на объект класса TMan* pMan является открытым членом класса главной формы приложения TMainForm. При нажатии кнопки "Обмен" происходит обмен имени и фамилии путём вызова метода pMan->Change(); На
рисунке ниже выделены те файлы, которые обязательно должны быть в Вашем проекте:
Приложение: Казахстан, Алма-Ата Организация: Казахский научный центр карантинных и зоонозных инфекций Адрес сайта:Медицинские программы для Linux ICQ # 256452186
Ответ отправил: Dr_Andrew, Модератор
Ответ отправлен: 07.07.2009, 23:09
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251953
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 170209:
Здравствуйте уважаемые эксперты!Такой вопрос:подскажите как написать консольное приложение для поиска файла по имени,при этом путь к имени файла должен описываться методом construction(string drive),а сам поиск выполняется ,для определённого в конструкторе пути к файлу, методом vector<string> Find(string fileName),где возвращается вектор найденных файлов,каждый элемент вектора-файловое имя с полностью определённым маршрутом. Метод блочный пока поиск является полный.Я с STL библиотекой плохо знакома,помогите
организовать код либо дайте инфу по поводу этого.Заранее благодарна
Отвечает Совильски Августа Антоновна, 1-й класс :
Здравствуйте, light1002! Немного не понятна фраза "Метод блочный пока поиск является полный". Приведу пример функции, которая принимает строку с начальной директорией поиска(это может быть корневая директория),строку с именем файла(но не маской,т.к. придется писать отдельную функцию для сравнения строки с маской) и указатель на вектор строк для записи результатов. Функция ищет заданный файл во всех поддиректориях данной директории. Она рекурсивна, поэтому в случае начала поиска из корневой директории
с большим уровнем вложенности подкаталогов и большим количеством файлов будет работать крайне медленно.
Исправленн передаваемый параметр
-----
∙ Отредактировал: Victor Pyrlik, Модератор
∙ Дата редактирования: 11.07.2009, 13:52 (время московское)