Форум программистов, компьютерный форум CyberForum.ru

Поле mutable в структуре - C++

Восстановить пароль Регистрация
 
 
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.06.2015, 12:26     Поле mutable в структуре #1
Добрый день.
Есть структура
C++
1
2
3
4
5
6
struct NameStructure
{
  protected:
    mutable TDateTime Time;
.......
}
Эту структуру я объявил в другом классе и пытаюсь заполнить переменную Time. А мне выпадает ошибка: E2247 NameStructure::Time' is not accessible.
Подскажите пожалуйста, как ей присвоить значение?
Спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 12:29     Поле mutable в структуре #2
Убрать protected
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.06.2015, 12:33  [ТС]     Поле mutable в структуре #3
Ilot, не зря наверно автор этого кода сделал protected....
По другому никак?
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
30.06.2015, 12:35     Поле mutable в структуре #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Костяныч Посмотреть сообщение
По другому никак?
Сделай, в public-области, сеттер для присвоения значения Time.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 12:38     Поле mutable в структуре #5
Цитата Сообщение от Костяныч Посмотреть сообщение
По другому никак?
Добавь метод, изменяющий переменную, или метод, который возвращает ссылку на неё.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
30.06.2015, 12:44     Поле mutable в структуре #6
Цитата Сообщение от Костяныч Посмотреть сообщение
не зря наверно автор этого кода сделал protected
mutable и protected это вообще из двух разных плоскостей понятия.
Возможно, имелось в виду, mutable и const?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 12:57     Поле mutable в структуре #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Возможно, имелось в виду, mutable и const?
Скорее всего имелось ввиду, что переменная для внутреннего пользования и никто не должен лазИть к ней своими шалавливыми ручками не иначе как посредством наследования и переопределения метода работы с ней в наследуемом классе.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
30.06.2015, 12:59     Поле mutable в структуре #8
Цитата Сообщение от Ilot Посмотреть сообщение
Скорее всего имелось ввиду, что переменная для внутреннего пользования и никто не должен лазИть к ней своими шалавливыми ручками не иначе как посредством наследования и переопределения метода работы с ней в наследуемом классе.
Ilot, при чём тут мютабл?
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
30.06.2015, 13:03     Поле mutable в структуре #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
при чём тут мютабл?
Не при чём. Считай, что его нет, вопрос темы от этого не меняется.
Цитата Сообщение от Костяныч Посмотреть сообщение
NameStructure::Time' is not accessible.
Подскажите пожалуйста, как ей присвоить значение?
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 13:21     Поле mutable в структуре #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ilot, при чём тут мютабл?
На самом деле да, он не при чём. Я в тему зашёл только из-за него)
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 13:27     Поле mutable в структуре #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ilot, при чём тут мютабл?
Притом, что эта переменная может использоваться подобно мъютексу.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 13:44     Поле mutable в структуре #12
Цитата Сообщение от Ilot Посмотреть сообщение
Притом, что эта переменная может использоваться подобно мъютексу.
Ну, это, как бы две разные сущности. Ключевое слово mutable не имеет ничего общего со взаимным исключением.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 14:56     Поле mutable в структуре #13
Цитата Сообщение от castaway Посмотреть сообщение
Ключевое слово mutable не имеет ничего общего со взаимным исключением.
castaway, простой пример:
Э. Уильямс Параллельное программирование в действии стр. 120.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 15:00     Поле mutable в структуре #14
Цитата Сообщение от Ilot Посмотреть сообщение
castaway, простой пример:
Э. Уильямс Параллельное программирование в действии стр. 120.
Извини, но я ради такого простого примера не буду покупать книгу, или искать её электронный вариант.
На твоём месте было бы правильнее цитировать его.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 15:05     Поле mutable в структуре #15
Цитата Сообщение от castaway Посмотреть сообщение
На твоём месте было бы правильнее цитировать его.
Твоя правда.
В книге приводится пример многопоточного контейнера.
Структура класса:
Поле mutable в структуре
Комментарий:
Поле mutable в структуре
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 15:18     Поле mutable в структуре #16
Ilot, эта выдержка - всего лишь пример конкретного случая, который не подтверждает слова:
Цитата Сообщение от Ilot Посмотреть сообщение
Притом, что эта переменная может использоваться подобно мъютексу.
Ты знаешь для чего существует ключевое слово mutable?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 15:45     Поле mutable в структуре #17
Цитата Сообщение от castaway Посмотреть сообщение
Ты знаешь для чего существует ключевое слово mutable?
Нет. Просвяти.
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,620
30.06.2015, 16:17     Поле mutable в структуре #18
Цитата Сообщение от Ilot Посмотреть сообщение
Нет.
Для организации изменяемого свойства в неизменяемом объекте.

Добавлено через 4 минуты
Ilot, в данном конкретном случае это проявляется следующим образом: функция empty() - const. Внутри нее нельзя менять состояние объекта. А вот mutable позволяет сделать исключение для этого. В empty мы работаем с объектом, как с неизменяемым. Но по логике работы, нам, тем не менее, нужно его изменить (захватить мютекс), вот тут mutable и пригодился.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.06.2015, 16:40     Поле mutable в структуре #19
DrOffset, я просто шучу. Я понимаю для чего необходим mutable.
Просто вопрос castaway'я звучит примерно как: "Ты знаешь о чем говоришь?" . Вот я и смутился.... хотя есть еще один способ применения ключевого слова mutable. А именно при передаче переменных в блямба функцию. Потому как без ключевого слова mutable они передаются по константной ссылке (при захвате внешних переменных).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 16:46     Поле mutable в структуре
Еще ссылки по теме:

несколько mutable bool в классе C++
Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? C++
Поле size в структуре типа дерево C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
30.06.2015, 16:46     Поле mutable в структуре #20
Насколько я понимаю, mutable вводили для обозначения вспомогательных полей, которые логически не являются частью состояния объектов. Например, у нас есть какой-то контейнер с поиском, который кеширует результат последнего запроса на случай, если он повторится. Логически чтение из такого контейнера будет const-операцией, а в суровой действительности надо будет изменять lastFound. Вот тут-то мышка mutable и пригодится.
Yandex
Объявления
30.06.2015, 16:46     Поле mutable в структуре
Ответ Создать тему
Опции темы

Текущее время: 09:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru