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

Доступ к переменным - C++

Восстановить пароль Регистрация
 
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
31.05.2012, 23:09     Доступ к переменным #1
Есть иерархия классов:
C++
1
2
3
4
5
6
7
8
9
10
class base{
 int a;
};
class der : private base{
 void f(){
  //Необходимо использовать переменную base::a
  //Но постоянно писать base:: утомляет и код становится нечитабельным
  //Как можно это обойти?
 }
};
Добавлено через 34 минуты
Помогите пожалуйста, вопрос же несложный.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 23:17     Доступ к переменным #2
По идеи вот так должно сработать.
C++
1
2
3
4
5
6
7
8
9
class base{
 int a;
};
class der : private base{
 void f(){
   using base::a;
   a = 10;
 }
};
Добавлено через 53 секунды
Только 'a' должна быть объявлена как public или der должен быть дружественным классом.
mad_svyat
17 / 17 / 0
Регистрация: 10.01.2012
Сообщений: 34
31.05.2012, 23:19     Доступ к переменным #3
Юзай директиву препроцессора #define, например. Вместо A можешь присвоить любое другое название.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
class base{
public:
    int a;
};
 
#define A base::a
class der : private base{
 void f(){
  //Необходимо использовать переменную base::a
  //Но постоянно писать base:: утомляет и код становится нечитабельным
  //Как можно это обойти?
     A = 0;
 }
};
 
int main()
{
    return 0;
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 23:22     Доступ к переменным #4
А стоп. Так она даже не static. Покажите как именно вы хотите использовать ее.

Добавлено через 2 минуты
Так ладно, тот код что я выше привел - бред, так как base не пространство имен, не обращайте на него внимания. Пора идти отдыхать.
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
31.05.2012, 23:36  [ТС]     Доступ к переменным #5
Как хочу использовать... Ну, по-прямому назначению
C++
1
int c = base::a + 5;
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
31.05.2012, 23:40     Доступ к переменным #6
Цитата Сообщение от Lordif Посмотреть сообщение
Ну, по-прямому назначению
по прямому назначение это так:
C++
1
2
base b1;
int c = b1.a + 5;

base::a это обращение к статической переменной.
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
01.06.2012, 09:07  [ТС]     Доступ к переменным #7
У меня иерархия классов и доступ необходим в функции класса, поэтому это обращение не к статической переменной.

Добавлено через 2 минуты
Может можно как то использовать typedef или typename (вообще не понимаю в каких случаях и зачем они нужны)

Добавлено через 8 часов 17 минут
Помогите пожалуйста

Добавлено через 1 час 1 минуту
Проблема решена
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
01.06.2012, 11:05     Доступ к переменным #8
А слабо объявить тип доступа к a не private:, а protected:!!!!!
private члены класса закрыты для производного класса!!!!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 11:37     Доступ к переменным
Еще ссылки по теме:

C++ "Двойной" доступ к переменным класса
Прямой доступ к переменным C++
Доступ к переменным в DLL программе из внешних програм C++

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

Или воспользуйтесь поиском по форуму:
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
01.06.2012, 11:37  [ТС]     Доступ к переменным #9
Именно так и решил проблему)
Yandex
Объявления
01.06.2012, 11:37     Доступ к переменным
Ответ Создать тему
Опции темы

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