![]() |
|
Модераторы: bsa |
![]()
|
|
| Dontshooot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.6.2010 Репутация: нет Всего: нет |
Доброго времени суток. Столкнулся с такой проблемой. Необходимо в описании класса перегрузить функцию из namespace std. Вот код:
При компиляции получаю .../ds_queue.hpp|22|error: ‘void std::swap(ds_queue&, ds_queue&)’ should have been declared inside ‘std’| |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
при указании дружбы для функции из пространства имен необходимо, чтоб функция была объявлена в этом пространстве заранее.
|
|||
|
||||
| Dontshooot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.6.2010 Репутация: нет Всего: нет |
то есть так?
Но тогда получаю ошибки .../ds_queue.hpp|7|error: variable or field ‘swap’ declared void| .../ds_queue.hpp|7|error: ‘ds_queue’ was not declared in this scope| что в принципе логично |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
да так ну так тип надо вначале продекларировать угу получаются круг... только не замкнутый..
как выход из такого положения , определить swap как член класса, и уже его задействовать в std::swap . Это сообщение отредактировал(а) mes - 24.6.2010, 23:50 |
|||
|
||||
| Dontshooot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.6.2010 Репутация: нет Всего: нет |
Мне показалось странным что код скомпилился когда я добавил в начале using namespace std; и соответственно из описания функций убрал std::
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Dontshooot, сделай метод swap. В паре с конструктором копирования он сильно облегчает работу. Например, освобождение памяти в этом случае достаточно будет сделать только в деструкторе, а, например, оператор присваивания будет выглядеть так:
Добавлено через 3 минуты и 10 секунд
Ничего странного. Просто нельзя использовать функции, находящиеся в пространстве имен, без их предварительной декларации внутри namespace. |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |