Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > запись и доступ к данным |
Автор: kuvshinka 26.12.2016, 21:18 | ||
Есть класс A
также есть некие классы B, C... Вопрос: можно ли (если да, то подскажите пож-та на примере) сделать так, чтобы в классе В можно было бы пользоваться (компиляция без ошибок) методами и setValue, и getValue класса А, а в классе С — ТОЛЬКО методом getValue? то есть класс А - это некий контейнер данных, которые сохраняются в нем через функции аля setValue в одних классах (например класс В), а используются (и ТОЛЬКО) через метод аля getValue - в других (класс С) |
Автор: миг 27.12.2016, 12:57 |
https://msdn.microsoft.com/ru-ru/library/kktasw36.aspx Используйте public и protected |
Автор: solowey 27.12.2016, 13:53 | ||
В таком варианте подойдет???
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zapis-i-dostup-k-dannym-id58615f8e84a74b7a870f5bc3#findElement_E7045_5862481007af937b4d68d238_0 |
Автор: solowey 27.12.2016, 13:53 | ||
В таком варианте подойдет???
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zapis-i-dostup-k-dannym-id58615f8e84a74b7a870f5bc3#findElement_E7045_5862481007af937b4d68d238_0 |
Автор: solowey 27.12.2016, 13:53 | ||
В таком варианте подойдет???
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zapis-i-dostup-k-dannym-id58615f8e84a74b7a870f5bc3#findElement_E7045_5862481007af937b4d68d238_0 |
Автор: solowey 27.12.2016, 13:53 | ||
В таком варианте подойдет???
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zapis-i-dostup-k-dannym-id58615f8e84a74b7a870f5bc3#findElement_E7045_5862481007af937b4d68d238_0 |
Автор: solowey 27.12.2016, 13:53 | ||
В таком варианте подойдет???
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zapis-i-dostup-k-dannym-id58615f8e84a74b7a870f5bc3#findElement_E7045_5862481007af937b4d68d238_0 |
Автор: миг 27.12.2016, 14:51 |
SetValue наверно нужно в protected поместить. И наследовать class C : private A |
Автор: kuvshinka 27.12.2016, 22:15 |
а у getValue какой должен быть уровень доступа в базовом классе А? |
Автор: миг 27.12.2016, 22:20 |
kuvshinka, publlic конечно. ты ведь хотела, чтобы getvalue использовался во всех классах. |
Автор: kuvshinka 27.12.2016, 23:07 | ||||
миг: не работает... при наследовании
при использовании в классе С
вылетает ошибка void A::setValue(int) is protected |
Автор: миг 28.12.2016, 08:23 |
kuvshinka, потому-что закрытый метод класса. Там всё работает. Можешь создать открытую функцию, которая будет вызывать закрытый метод класса. |
Автор: kuvshinka 28.12.2016, 22:32 | ||
А какой смысл "создать открытую функцию, которая будет вызывать закрытый метод класса"? допустим:
получается ведь масло масляное...тогда я эту функцию setNewValue смогу и из любого другого класса © вызвать(и даже без наследования class C : private A)... objA.setNewValue(10); мне же надо иметь возможность из одного класса вызывать setNewValue (или setValue), а из другого класса - не иметь такой возможности (ошибка при сборке)... |
Автор: миг 29.12.2016, 15:17 |
kuvshinka, Вы имеете эту возможность. Из другого-класса думаю не получится вызвать эту функцию. |
Автор: kuvshinka 29.12.2016, 22:00 |
в том-то все и дело, что можно вызвать setNewValue из любого другого класса - она же public....проверено! |
Автор: feodorv 30.12.2016, 09:50 |
Может, Вы https://msdn.microsoft.com/ru-ru/library/465sdshe.aspx (тут ссылка) ищите? |