|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2011, 00:18 | #11 |
Пользователь
Регистрация: 26.11.2009
Сообщений: 87
|
СпасибО, я в курсе
Лучше объясните мне как перегружать оператор ввода???
Помог - жми весы
|
20.01.2011, 01:40 | #12 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Примерно так:
Код:
|
20.01.2011, 01:52 | #13 |
Пользователь
Регистрация: 26.11.2009
Сообщений: 87
|
Дело в том, что operator >> - это друг класса, поэтому доступен в перегрузке "только для чтения".
И вторая проблема: как узнать, сколько выделять памяти?
Помог - жми весы
|
20.01.2011, 02:21 | #14 | ||
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Цитата:
Цитата:
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
||
20.01.2011, 02:30 | #15 |
Пользователь
Регистрация: 26.11.2009
Сообщений: 87
|
Просто, насколько я понимаю, если не перегружать оператор, то придется делать отдельную функцию-член класса, которая выводит данные....
В моём случае я представляю это только как-то так: Код:
А про память: Код:
Помог - жми весы
Последний раз редактировалось Stilet; 20.01.2011 в 07:56. |
20.01.2011, 02:59 | #16 | |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Что-то типа new char[strlen(qw.mass)+1].
Добавлять единицу надо так как туда дописывается символ конца строки (/0). Если не ошибаюсь. Цитата:
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 20.01.2011 в 03:09. |
|
20.01.2011, 03:29 | #17 |
Пользователь
Регистрация: 26.11.2009
Сообщений: 87
|
Да, спасибо.
Но это не выход. Есть ещё такая беда: оператор доступен только для чтения, так как друг....к тому же память нужно выделять так, чтобы её ровно хватило на то, чтобы в qw.mass записать всё то, что введено в поток... [length+1] точно маловато, особенно, если объект создался пустым конструктором и его length = 0. Выхода так и нет.
Помог - жми весы
|
20.01.2011, 03:34 | #18 | |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Упс. Я всё выше неправильно понял. Не обратил внимание на то, что за метод пишем . Сейчас погуглю...
Гугл привёл туда: http://bytes.com/topic/c/answers/877...tream-string-s Там прямо как у тебя задание. И проблема та же. Ему посоветовали не реаллокатить каждый раз память (ибо это неэффективно, а увеличивать, если не хватает места. Я тут с ним полностью согласен. То же самое применяется в контейнерах STL (vector и проч.) — при превышении выделенной памяти, она реаллокатится с удвоенным размером. Цитата:
Код:
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Stilet; 20.01.2011 в 08:03. |
|
20.01.2011, 07:36 | #19 | |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Цитата:
Код:
Потом используем так: Код:
И про высвобождение динамической памяти не забывай |
|
20.01.2011, 07:48 | #20 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
На кой чёрт буфер делать глобальным? Область видимости должна быть минимально необходимой. В остальном то же, что я написал в предыдущем посте. На разве что в реализации метода вместо метода getline использован оператор сдвига влево.
p.s.: не нуль-строка, а нуль-символ, про терминологию можете почитать здесь — http://ru.wikipedia.org/wiki/%D0%9D%...BE%D0%BA%D0%B0
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 20.01.2011 в 07:56. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
классы вида for="..." и class="A B C" | Darkstar100 | HTML и CSS | 5 | 19.01.2010 20:06 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |