Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 13:57   #1
armarin
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 10
По умолчанию переменная класса

Подскажите как сделать так, чтобы переменная height была не доступна для записи вне класса и доступна для чтения. для чтения вне класса она как я понимаю доступна из за своей области видимости (public).

Цитата:
class Rec
{
public:
float height;
float width;
float funk();
};

Последний раз редактировалось armarin; 19.12.2012 в 14:07.
armarin вне форума Ответить с цитированием
Старый 19.12.2012, 14:03   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Подскажите как сделать так, чтобы переменная height была не доступна для записи вне класса.
Поместите её под спецификатор доступа private.
Abstraction вне форума Ответить с цитированием
Старый 19.12.2012, 14:05   #3
armarin
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 10
По умолчанию

прошу прощения, неправильно задал вопрос.
Как сделать так чтобы она была доступна для чтения и НЕ доступна для записи.
armarin вне форума Ответить с цитированием
Старый 19.12.2012, 14:06   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Как сделать так чтобы она была доступна для чтения и НЕ доступна для записи.
Объявить её с ключевым словом const.
Abstraction вне форума Ответить с цитированием
Старый 19.12.2012, 14:09   #5
armarin
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 10
По умолчанию

Насколько я понимаю тогда она будет не доступна для чтения вне класса.
armarin вне форума Ответить с цитированием
Старый 19.12.2012, 14:11   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Насколько я понимаю тогда она будет не доступна для чтения вне класса.
Нет. Доступность члена класса для кода вне класса определяется спецификатором доступа.
Abstraction вне форума Ответить с цитированием
Старый 19.12.2012, 14:17   #7
armarin
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 10
По умолчанию

Возможно существуют еще какиенибудь способы?
armarin вне форума Ответить с цитированием
Старый 19.12.2012, 14:21   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Возможно существуют еще какиенибудь способы?
Поместить переменную под спецификатор доступа private. Объявить и реализовать метод-аксессор со спецификатором доступа public, возвращающий её значение.
Abstraction вне форума Ответить с цитированием
Старый 22.12.2012, 19:59   #9
armarin
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 10
По умолчанию

Не нашел хорошего объяснения что же такое метод-акссесор, надеюсь он похож на это)
Проверьте на правильность пожалуйста.

Цитата:
class Rectangl
{
float height;
public:
float funk()
{
return height;
}
};
armarin вне форума Ответить с цитированием
Старый 24.12.2012, 11:41   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Не нашел хорошего объяснения что же такое метод-акссесор
http://yandex.ru/yandsearch?text=%D0...=213&noreask=1
Цитата:
Проверьте на правильность пожалуйста.
Плохое имя метода. getHeight() несколько легче запомнить и использовать. Ещё желательно сделать метод константным:
Код:
float getHeight(void)const{
  return height;
}
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к полю класса из другого поля это класса NaumOff Общие вопросы Delphi 10 09.10.2012 09:53
Функция базового класса вызывает критическую ошибку при вызове для класса-потомка Archet Общие вопросы C/C++ 7 17.01.2012 20:17
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
Обращение к из одной функции класса к другой того же класса,не указывая к какому объекту она относиться zipwind C++ Builder 1 09.04.2011 17:18
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11