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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
#1

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

31.05.2012, 23:09. Просмотров 444. Ответов 8
Метки нет (Все метки)

Есть иерархия классов:
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 минуты
Помогите пожалуйста, вопрос же несложный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 23:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доступ к переменным (C++):

Прямой доступ к переменным - C++
Доброго времени суток, форумчане. Сразу оговорю, что название темы может не совсем корректно раскрывать суть вопроса. Начну с аналога...

Доступ к переменным класса - C++
Давным давно помню была такая фишка в сях, когда приходилось много раз писать конструкцию типа "VarName->member()" можно было заключить это...

Доступ из статической функции к не стачисеским переменным - C++
Добрый день! Имеется класс со статической функцией, как получить доступ, из это функции к не статичным переменным. Что то типа этого: ...

Friend функции не имеют доступ к закрытым переменным - C++
Всем привет. Изучаю c++ по Липпману 5-ое издание. Там на стр. 351-352 используются friend функции для получения доступа к закрытым...

Доступ к переменным в DLL программе из внешних програм - C++
Подскажите пожалуйста, как реализовать Записать данные из программы №1 в программу DLL и считать данные из DLL программой №2 По...

Доступ к переменным базового класса при наследовании - C++
Есть следующий код class Base { protected: int x; Base* enemy; public: Base() {}

8
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 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 должен быть дружественным классом.
0
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;
}
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 23:22 #4
А стоп. Так она даже не static. Покажите как именно вы хотите использовать ее.

Добавлено через 2 минуты
Так ладно, тот код что я выше привел - бред, так как base не пространство имен, не обращайте на него внимания. Пора идти отдыхать.
0
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
31.05.2012, 23:36  [ТС] #5
Как хочу использовать... Ну, по-прямому назначению
C++
1
int c = base::a + 5;
0
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 это обращение к статической переменной.
0
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
01.06.2012, 09:07  [ТС] #7
У меня иерархия классов и доступ необходим в функции класса, поэтому это обращение не к статической переменной.

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

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

Добавлено через 1 час 1 минуту
Проблема решена
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 1
01.06.2012, 11:05 #8
А слабо объявить тип доступа к a не private:, а protected:!!!!!
private члены класса закрыты для производного класса!!!!!!!
0
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
01.06.2012, 11:37  [ТС] #9
Именно так и решил проблему)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 11:37
Привет! Вот еще темы с ответами:

"Двойной" доступ к переменным класса - C++
Господа, прошу совета в изложенной ниже ситуации. Часто мне встречается в различных вариациях, поэтому есть потребность в изящном решении....

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Префиксы к переменным - C++
собстно какие вы используете и для чего/где ? может кто-нибудь не понял о чем речь... пример: m_object

std::vector доступ по индексу vs доступ по итератору - C++
std::vector&lt;int&gt; tmp; int i = 0; tmp.resize(1000000); std::vector&lt;int&gt;::iterator it = tmp.begin(); for (int m = 0;...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
01.06.2012, 11:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru