20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
1

Поле mutable в структуре

30.06.2015, 12:26. Показов 1779. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Есть структура
C++
1
2
3
4
5
6
struct NameStructure
{
  protected:
    mutable TDateTime Time;
.......
}
Эту структуру я объявил в другом классе и пытаюсь заполнить переменную Time. А мне выпадает ошибка: E2247 NameStructure::Time' is not accessible.
Подскажите пожалуйста, как ей присвоить значение?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2015, 12:26
Ответы с готовыми решениями:

Не заполнет поле в структуре
Описал структуру, но она некорректно заполняется. А именно, пропускается поле при втором и...

Обнулить поле ID в структуре
Добрый вечер! Подскажите как обнулить поле ID в структуре? orderId - это порядковый номер,...

Необходимо создать в структуре поле строкой
Нужно создать "переменную" academicDegree такой, чтобы я туда смог записать строку. Чтобы в...

Поле size в структуре типа дерево
Доброго времени суток. Вопрос, где лучше хранить поле содержащее размер структуры. Не хочется в...

20
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 12:29 2
Убрать protected
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
30.06.2015, 12:33  [ТС] 3
Ilot, не зря наверно автор этого кода сделал protected....
По другому никак?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
30.06.2015, 12:35 4
Лучший ответ Сообщение было отмечено Костяныч как решение

Решение

Цитата Сообщение от Костяныч Посмотреть сообщение
По другому никак?
Сделай, в public-области, сеттер для присвоения значения Time.
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
30.06.2015, 12:38 5
Цитата Сообщение от Костяныч Посмотреть сообщение
По другому никак?
Добавь метод, изменяющий переменную, или метод, который возвращает ссылку на неё.
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
30.06.2015, 12:44 6
Цитата Сообщение от Костяныч Посмотреть сообщение
не зря наверно автор этого кода сделал protected
mutable и protected это вообще из двух разных плоскостей понятия.
Возможно, имелось в виду, mutable и const?
1
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 12:57 7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Возможно, имелось в виду, mutable и const?
Скорее всего имелось ввиду, что переменная для внутреннего пользования и никто не должен лазИть к ней своими шалавливыми ручками не иначе как посредством наследования и переопределения метода работы с ней в наследуемом классе.
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
30.06.2015, 12:59 8
Цитата Сообщение от Ilot Посмотреть сообщение
Скорее всего имелось ввиду, что переменная для внутреннего пользования и никто не должен лазИть к ней своими шалавливыми ручками не иначе как посредством наследования и переопределения метода работы с ней в наследуемом классе.
Ilot, при чём тут мютабл?
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
30.06.2015, 13:03 9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
при чём тут мютабл?
Не при чём. Считай, что его нет, вопрос темы от этого не меняется.
Цитата Сообщение от Костяныч Посмотреть сообщение
NameStructure::Time' is not accessible.
Подскажите пожалуйста, как ей присвоить значение?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
30.06.2015, 13:21 10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ilot, при чём тут мютабл?
На самом деле да, он не при чём. Я в тему зашёл только из-за него)
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 13:27 11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ilot, при чём тут мютабл?
Притом, что эта переменная может использоваться подобно мъютексу.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
30.06.2015, 13:44 12
Цитата Сообщение от Ilot Посмотреть сообщение
Притом, что эта переменная может использоваться подобно мъютексу.
Ну, это, как бы две разные сущности. Ключевое слово mutable не имеет ничего общего со взаимным исключением.
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 14:56 13
Цитата Сообщение от castaway Посмотреть сообщение
Ключевое слово mutable не имеет ничего общего со взаимным исключением.
castaway, простой пример:
Э. Уильямс Параллельное программирование в действии стр. 120.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
30.06.2015, 15:00 14
Цитата Сообщение от Ilot Посмотреть сообщение
castaway, простой пример:
Э. Уильямс Параллельное программирование в действии стр. 120.
Извини, но я ради такого простого примера не буду покупать книгу, или искать её электронный вариант.
На твоём месте было бы правильнее цитировать его.
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 15:05 15
Цитата Сообщение от castaway Посмотреть сообщение
На твоём месте было бы правильнее цитировать его.
Твоя правда.
В книге приводится пример многопоточного контейнера.
Структура класса:
Поле mutable в структуре

Комментарий:
Поле mutable в структуре
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
30.06.2015, 15:18 16
Ilot, эта выдержка - всего лишь пример конкретного случая, который не подтверждает слова:
Цитата Сообщение от Ilot Посмотреть сообщение
Притом, что эта переменная может использоваться подобно мъютексу.
Ты знаешь для чего существует ключевое слово mutable?
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 15:45 17
Цитата Сообщение от castaway Посмотреть сообщение
Ты знаешь для чего существует ключевое слово mutable?
Нет. Просвяти.
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
30.06.2015, 16:17 18
Цитата Сообщение от Ilot Посмотреть сообщение
Нет.
Для организации изменяемого свойства в неизменяемом объекте.

Добавлено через 4 минуты
Ilot, в данном конкретном случае это проявляется следующим образом: функция empty() - const. Внутри нее нельзя менять состояние объекта. А вот mutable позволяет сделать исключение для этого. В empty мы работаем с объектом, как с неизменяемым. Но по логике работы, нам, тем не менее, нужно его изменить (захватить мютекс), вот тут mutable и пригодился.
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,498
Записей в блоге: 6
30.06.2015, 16:40 19
DrOffset, я просто шучу. Я понимаю для чего необходим mutable.
Просто вопрос castaway'я звучит примерно как: "Ты знаешь о чем говоришь?" . Вот я и смутился.... хотя есть еще один способ применения ключевого слова mutable. А именно при передаче переменных в блямба функцию. Потому как без ключевого слова mutable они передаются по константной ссылке (при захвате внешних переменных).
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
30.06.2015, 16:46 20
Насколько я понимаю, mutable вводили для обозначения вспомогательных полей, которые логически не являются частью состояния объектов. Например, у нас есть какой-то контейнер с поиском, который кеширует результат последнего запроса на случай, если он повторится. Логически чтение из такого контейнера будет const-операцией, а в суровой действительности надо будет изменять lastFound. Вот тут-то мышка mutable и пригодится.
1
30.06.2015, 16:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2015, 16:46
Помогаю со студенческими работами здесь

const_cast mutable
в чем разница? спасибо.

Const_cast и mutable
В чем их отличие и когда их необходимо использовать (если не нарушена архитектура программы)?

В макросе подставить поле в структуре
Здравствуйте! пишу под контроллер на IAR C у меня есть описание структуры: typedef struct...

Не получается создать в структуре поле с именем (char[]) чтобы компилировалось без warning
Всем привет. Потребовала жизнь немного разобраться с С, (до этого были 1С и совсем немножко С#),...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru