Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> модификатор метода const 
V
    Опции темы
Artemon
Дата 14.10.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Код

class B
{
};

class A
{
  std::auto_ptr<B> val; 

  public:
   std::auto_ptr<B> GetQuery()const
   {
   return val;
   }
};


При компиляции выдается ошибка, говорящая о том, что у объекта B нет конструктора копирования (хотя он есть по умолчанию). 
Если я убираю модификатор const, то все нормально собирается.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
mes
Дата 14.10.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Artemon @  14.10.2011,  10:04 Найти цитируемый пост)
 std::auto_ptr<B> GetQuery()const

 smile   это до первого применения    smile 
советую почитать про стратегию хранения auto_ptr.. 

Цитата(Artemon @  14.10.2011,  10:04 Найти цитируемый пост)
выдается ошибка,

с auto_ptr нельзя снять копию, не изменив оригинал, поэтому компилятор и возмущается smile




--------------------
PM MAIL WWW   Вверх
Artemon
Дата 14.10.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Цитата(mes @  14.10.2011,  11:42 Найти цитируемый пост)
   это до первого применения     

Что имеете ввиду ?

Добавлено через 3 минуты и 22 секунды
Насколько я знаю исходная копия auto_ptr  перестанет быть валидной, а вот с копией все будет в порядке.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
newbee
Дата 14.10.2011, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(Artemon @  14.10.2011,  13:34 Найти цитируемый пост)
Насколько я знаю исходная копия auto_ptr  перестанет быть валидной, а вот с копией все будет в порядке. 
Ну так возвращая копию val ты и меняешь исходный объект, что недопустипо в константном методе.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Artemon
Дата 14.10.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Цитата(newbee @  14.10.2011,  12:40 Найти цитируемый пост)
Ну так возвращая копию val ты и меняешь исходный объект, что недопустипо в константном методе.

Я уже не про модификатор const, а про то что mes как бэ намекаэ что будут проблемы дальше с возвращенным auto_ptr. Вот и говорю что максимум что будет - это то, что оригинальный auto_ptr станет не валидным, я прав ?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
mes
Дата 14.10.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Artemon @  14.10.2011,  11:46 Найти цитируемый пост)
от и говорю что максимум что будет - это то, что оригинальный auto_ptr станет не валидным, я прав ? 

 smile 
Цитата(Artemon @  14.10.2011,  11:46 Найти цитируемый пост)
а про то что mes как бэ намекаэ что будут проблемы дальше с возвращенным auto_ptr. 

а если внимательней :
Цитата(mes @  14.10.2011,  10:42 Найти цитируемый пост)
это до первого применения 

иль у Вас GetQuery() вызывается один раз ?
 smile 




--------------------
PM MAIL WWW   Вверх
Artemon
Дата 14.10.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Цитата(mes @  14.10.2011,  13:16 Найти цитируемый пост)
иль у Вас GetQuery() вызывается один раз ?

Да, именно так, через этот метод вытаскивается результат закрывающейся формы.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
mes
Дата 14.10.2011, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Artemon @  14.10.2011,  12:23 Найти цитируемый пост)
Да, именно так, через этот метод вытаскивается результат закрывающейся формы. 
ну..ну.. удачи при отладке smile




--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 14.10.2011, 14:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Artemon @  14.10.2011,  13:23 Найти цитируемый пост)
Да, именно так, через этот метод вытаскивается результат закрывающейся формы. 

тогда
1. метод не должен быть константным, так-как он модифицирует текущий объект. 
2. имя для такого метода неподходящее, оно не говорит пользователю о том, что объект модифицируется и второй раз его вызывать нельзя.
3. необходимо сделать проверку на двойной вызов функции.

PM   Вверх
Artemon
Дата 14.10.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Цитата(mes @  14.10.2011,  13:26 Найти цитируемый пост)
ну..ну.. удачи при отладке

Не вижу каких-либо даже мало мальских проблем  smile 


azesmcar, согласен.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
mes
Дата 14.10.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Artemon @  14.10.2011,  13:26 Найти цитируемый пост)

Не вижу каких-либо даже мало мальских проблем  smile 

так хорошо танцуете, не буду Вас разубеждать smile





--------------------
PM MAIL WWW   Вверх
Artemon
Дата 14.10.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Всем спасибо за ответы, тему закрываю.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
baldina
Дата 14.10.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Artemon, просто любопытно, чем Вас не устроило простое
Код

class B
{
};
class A
{
  B val; 
  public:
   B GetQuery()const
   {
   return val;
   }
};


PM MAIL   Вверх
mes
Дата 14.10.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



val  указатель на динамический объект..  и полагаю, что тс  хочется не думать, забрали его или он еще хранится в A..





--------------------
PM MAIL WWW   Вверх
Artemon
Дата 14.10.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



baldina, все именно так, как сказал mes

Это сообщение отредактировал(а) Artemon - 14.10.2011, 15:14


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.