![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
FasTer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Здравствуйте. пишу прогу и там в алгоритме я в цикле использую свой класс типа int. потом в стандартных классах я использую очередь Queue.
далее Int - мой класс. поле класса int theInt; конструктор только присваивает значение и есть функция присваивания. далее
теперь когда я 2 раза использую get cout<<q.get()<q.get(); мне два раза возращает 5. Подскажите, в чем может быть дело... |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
FasTer, исходник весь в студию
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
FasTer |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
usr^) те гык%
![]() файл .h с моим классом его назвать summer.h
теперь сам .сpp:
а вот файл матрицы tree7.txt:
и вот когда указываю путь от 1 до 7 - то работает, а когда от 7 до 1 не работает, тк в очередь вносит 1 вершину. вот собстна не понимаю ,почему так. Извиняюсь за некорректный путь, ну это и не столь важно, тк это уже не алгоритм волновой ![]() Это сообщение отредактировал(а) FasTer - 3.7.2006, 12:27 |
||||||
|
|||||||
FasTer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Up!
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
FasTer, а ты не подумал что в очередь добавляеться обьект по ссылке? Дважды закинув один и тот же обьект ты на самом деле закинул две ссылки на один обьект.
Возьми нитку и яблоко. Одна длинная нитка это твоя очередь. Теперь привяжи к яблоку короткую нитку, другим концом к нитке-очереди. Надкуси яблоко. Привяжи ещё одну нитку к яблоку и другим концом к очереди. Глянь на это художественное произведение, поудивляйся чуду. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
это обсолютно ничего не значит (лишь только для избежания создания ненужных копий). Внутри все-равно вызывается копирующий конструктор (тоесть будут создано 2 копии объекта) FasTer, что есть Queue. У меня есть подозрение, что это обертка над std::queue. Если так, то есть большое подозрение, что ты не удаляешь элемент из очереди а лишь несколько раз получаешь ссылку на первый элемент очереди Это сообщение отредактировал(а) zss - 3.7.2006, 15:18 |
|||
|
||||
FasTer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
zss, Так а что мне делать?
по правилам же я написал get, взять. я использовал функцию printOn(cout); и выдает пустую очередь. Пытался отслеживать. Добавлено @ 18:44 Я попробывал по-разному. и вот что получил: когда я создаю Int q,w; Queue a; q.puInt(1); w.putInt(2); a.put(q); a.put(w); a.printOn(cout); \\ тут получаю 1 и 2 в a дальше изменяю w и тогда в a автоматически получается изменение ![]() а как тогда мне сделать так, чтобы использовать в цикле адгоритма переменную типа Int? массив создать? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ты бы лучше вместо своего путанного кода показал, что такое Queve. Действительно, возникает подозрение, что объекты туда не копируются, а только их ссылки.
-------------------- ... |
|||
|
||||
FasTer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Romikgy, код в студии...
Earnest. так я и спрашиваю, из-за чего в очереди хранится указатель элемента моего класса,и что можно с этим сделать... ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
![]() а кто класс писал? ты или нет? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Очередь откуда взялась? Что это за класс?
Что толку смотреть на твой код, если неизвестно, как очередь устроена. Давай показывай реализацию. Это явно не std::queve, т.е. в последней копии объектов хранятся. -------------------- ... |
|||
|
||||
FasTer |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Earnest, Что толку смотреть на твой код, если неизвестно, как очередь устроена.
Давай показывай реализацию. А что именно про куеуе? Romikgy, Я писал класс. у тебя какие-то сомнения? или что-то там не понятно? что сказать про класс? Добавлено @ 08:50 Использую СLassLib, вот файл куеуе
вот класс декуе
это все из classlib include. вот тут описаны очередь с 2-й очередью... ну это же стандартно... |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
откель тогда вопросы такие , что хранится в указателях? ты же писал, ты и придумывал что там должно хранится! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
FasTer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
В каких указателях?
я создаю Cur - элемент моего класса. его поле - int. и эту величину заношу в очередь. ... Romikgy, А у тебя код вообще работает этот, если запускал, ты настроил Вс для работы с classlib? У меня мой алгоритм работает на циклических графах, а вот на дереве не работает, если идти из листка в корень. а если из корня в листок - то работает, тк постоянно одна вершина в очереди хранится и извелкается потом. Если не можете помочь, то не нужно говорить, что сам написал, сам разбирайся. я бы и не постил тему если бы мог сам справиться, и не писал бы тут на 3 км. Я наследовал все вируальные классы от сортабла. чтобы мой класс был не вируальным... |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Похоже, в очереди действительно хранятся указатели: Хотя внутренностей контейнера все равно не видно, но настораживает, что функция put принимает неконстантную ссылку... и возвращает неконстантные ссылки... Да и сам тип Object - это что? Ты бы почитал документацию, если библиотека стандартная борландовская, то должно быть где-то описано, как с ней работать.
Но я бы выкинула это безобразие с дгоисторической семантикой и использовала stl. FasTer, чем обижаться, ты бы лучше посмотрел, что ты пишешь - можно подумать, что весь свет пишет исключительно на борланде и все должны знать, что такое сортабл и прочее... и какое это имеет отношение к очередям -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |