![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Несколько соображений по поводу классов. Хочу узнать у вас правильно ли я их понимаю.
Объекты, которые определяются на основе классов, объединяют в себе данные и методы с помощью которых можно работать с этими данными. Данные нужно описывать в закрытой части класса, чтобы ограничить их использование вне класса. Таким образом данные становятся недоступны из программы, невидимы. Что бы работать с данными нужно использовать методы - функции которые описаны в открытой части класса. В этих функциях нужно проверять правильность ввода/вывода значений в/из закрытых данных, тем самым защищая их. То есть в описанном мною классе Data_list в поле int birthday храниться дата рождения. А через функцию int birthday_put(int a) я получаю эту дату. И в ней я должен предусмотреть что бы вводимое значение являлось действительной датой. Например функция будет возвращать 1 если пользователь ввел правильный формат и полю birthday присвоено значение. И 0, если формат не верен, и данные не записаны. А в программе я буду обрабатывать эти значения. Так? Добавлено @ 19:24 Еще небольшой вопрос. Я работаю в Builder 6, и слева от текста кода, в проводнике, у меня отображается структура класса. Так вот когда я меняю объявление класса эта структура не меняется. Подскажете, как это лечится. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Вообщето
то для работы с файлами , имхо. -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Vendigo |
|
||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Млин, товарищи сертифицированные специалисты. Может разьясните как правильно получить строку из консоли?
А то чегой то у меня ![]() Вот полный текст программы:
Так тож не получается:
Это сообщение отредактировал(а) Vendigo - 18.1.2006, 20:02 |
||||
|
|||||
asdf |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 27.8.2004 Где: Кишинёвъ Репутация: нет Всего: 11 |
Это сообщение отредактировал(а) asdf - 18.1.2006, 22:06 --------------------
... |
|||
|
||||
asdf |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 27.8.2004 Где: Кишинёвъ Репутация: нет Всего: 11 |
ещё ты можешь получать доступ к закрытым членам класса, указав функцию не являющуюся членом, как friend в его объявлении.
--------------------
... |
||||
|
|||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Спасибо asdf, вроде работает. Сейчас уже поздно, завтра буду разбираться.
![]() ![]() ![]() |
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
1. Все, разобрался
![]() Оказывается у меня и здесь еще была ошибка:
я получал первый символ а не указатель на него! 2. Подскажите пожалуйста функцию которая возвращает код символа. Перерыл все свои книги и весь форум не могу найти такой простой вещи. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Ее нет ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Просто кастаните в int.
Теперь потабаним. Почти согласен. Только не так категарично. strcat действительно не следует использовать в общем случае. Точно так же как не стоит использовать strcpy и sprintf. Вместо них лучше использовать strncat, strncpy, snprintf (пример из жизни - скаченная и собранная quake1 у меня вылетала, так как там в Sys_Printf использовали vsprintf на 1024 байтный буфер, а строка(которая содержала всякие характеристики видюхи, и вообще была юзеру(мне) не нужна) получалась более 1024 символов. Результат - Segmentation fault). Про new - есть такие замечательные штуки как auto_ptr и shared_ptr, которые при определенным стечении обстоятельств позволят избежать утечек памяти и не вызывать delete. Указатели порой действительно можно заменить ссылками, что а) предотвратит передачи NULL'а, и кроме того б) увеличит скорость разработки , так как вместо "if(a) a->b" можно будет писать "a.b" :-) Вывод: используйте безопасные функции, и ваши волосы будут мягкими и пушистими. Соглсен ![]() зы. Вот чем хорош стандарт - там ф-ции snprintf и sprintf описываются рядом. Во всяких книжках "с++ за обеденный перерыв" (во всяком случае в тех, что попадались мне) такого можно не дождаться. Кстати, в С99 ф-ция snprintf(7.19.6.5) описывается ДО sprintf(7.19.6.6) ![]() Это сообщение отредактировал(а) Mayk - 20.1.2006, 20:52 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Void
Mayk Спасибо! Всего труднее найти то, что у тебя перед глазами ![]() Можете еще объяснить про кодировки? Я сделал так:
И получил таблицу символов. Так эти символы отображаются в консоли. Что то мне подсказывает что в оконном приложении символы были бы другие (или расположенны по другому). И еще такой вопрос: |
|||
|
||||
blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
вполне возможно. хотя бы потому, что оконное приложение могло использовать windows-кодировку, а консольное - dos-кодировку. про кодировку тут говорили не раз. воспользуйся поиском. к примеру, можно поискать слово "locale". |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
Что то тебе подсказывает правильно. Досовская русская кодировка (CP-866) отличается от кодировки Винды (Windows-1251) в верхней части таблици. До символа с номером 127 все кодировки повторяются. Как выглядит кодировка можно посмотреть Character Map которая идет в комплекте постаки винды. Там нужно вызвать на показ любой шрифт соответствуюший кодировке винды. Я например смотрю или Arial или Courier New Cyr. -------------------- Пролетал мимо. |
|||
|
||||
asdf |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 27.8.2004 Где: Кишинёвъ Репутация: нет Всего: 11 |
переоткрытием проекта. если перед изменением объявления ты переходишь к нему 2х кликом в проводнике классов, структура должна правиться сходу .... --------------------
... |
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Ничего не понимаю
![]() Я написал код который как я думаю выводит DOS кодировку символов. Но обратное преобразование не получается т.е. (int)c возвращает странный код. Например если char c = 'б' то (int)c = -95 ![]()
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Объяви c, как unsigned char.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |