| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > модификатор метода const |
| Автор: Artemon 14.10.2011, 11:04 | ||
При компиляции выдается ошибка, говорящая о том, что у объекта B нет конструктора копирования (хотя он есть по умолчанию). Если я убираю модификатор const, то все нормально собирается. |
| Автор: mes 14.10.2011, 11:42 |
советую почитать про стратегию хранения auto_ptr.. с auto_ptr нельзя снять копию, не изменив оригинал, поэтому компилятор и возмущается |
| Автор: Artemon 14.10.2011, 12:34 |
Что имеете ввиду ? Добавлено через 3 минуты и 22 секунды Насколько я знаю исходная копия auto_ptr перестанет быть валидной, а вот с копией все будет в порядке. |
| Автор: newbee 14.10.2011, 12:40 |
| Ну так возвращая копию val ты и меняешь исходный объект, что недопустипо в константном методе. |
| Автор: mes 14.10.2011, 13:16 | ||||
а если внимательней : иль у Вас GetQuery() вызывается один раз ? |
| Автор: Artemon 14.10.2011, 13:23 |
Да, именно так, через этот метод вытаскивается результат закрывающейся формы. |
| Автор: mes 14.10.2011, 13:26 | ||
|
| Автор: azesmcar 14.10.2011, 14:01 | ||
тогда 1. метод не должен быть константным, так-как он модифицирует текущий объект. 2. имя для такого метода неподходящее, оно не говорит пользователю о том, что объект модифицируется и второй раз его вызывать нельзя. 3. необходимо сделать проверку на двойной вызов функции. |
| Автор: Artemon 14.10.2011, 14:26 |
Не вижу каких-либо даже мало мальских проблем azesmcar, согласен. |
| Автор: mes 14.10.2011, 14:38 |
так хорошо танцуете, не буду Вас разубеждать |
| Автор: Artemon 14.10.2011, 14:48 |
| Всем спасибо за ответы, тему закрываю. |
| Автор: baldina 14.10.2011, 14:51 | ||
Artemon, просто любопытно, чем Вас не устроило простое
|
| Автор: mes 14.10.2011, 14:56 |
| val указатель на динамический объект.. и полагаю, что тс хочется не думать, забрали его или он еще хранится в A.. |
| Автор: Artemon 14.10.2011, 15:14 |
| baldina, все именно так, как сказал mes |
| Автор: mes 14.10.2011, 15:26 |
| аx да, чего то про основной вопрос забыли.. чтоб метод можно было обозначить const, пометьте auto_ptr mutable.. |
| Автор: bsa 14.10.2011, 16:47 |
| А лучше auto_ptr заменить на shared_ptr (есть в boost'е и стандарте c++11)... |