Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Egor138
32 / 13 / 3
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2

Область видимости

27.06.2013, 14:36. Показов 738. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня возникла проблема с областью видимости.

вот у меня два класса

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Obj
{
    public:
        Win *parent;
        void fun() 
        {
            parent->x+parent->y;      //Нужно видеть класс Win
             //...
        }
 
};
 
class Win
{
    public:
        int x,y;
        vector <Obj> vec;   //Нужно видеть класс Obj
};

И вот что происходит:
Мне нужно чтобы класс Win видел класс Obj и наоборот.
Я не могу никак додуматься как вообще можно сделать вхаимную видимость этих классов.
Ну или подскажите как по другому все сделать, чтобы опять не наткнуться на эту проблему
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2013, 14:36
Ответы с готовыми решениями:

Область видимости
Даю фрагмент программы: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cmath&gt; struct elem //тип элемента двусвязного списка ...

Область видимости в С++
В книге С++ Бархатный путь. ( http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/cppvw/cpp_047.html) сказано, что область действия имен...

Область видимости
Здравствуйте. Тут такое дело: #include &lt;vector&gt; class SomeClass { public: SomeClass( std::vector&lt; int &gt; v ) : vec( v ) {}...

4
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
27.06.2013, 14:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Obj;
 
class Win
{
    public:
        int x, y;
        vector <Obj> vec;
};
 
class Obj
{
    public:
        Win* parent;
        void fun()
        {
            //parent->x + parent->y;
            // ...
        }
 
};
1
 Аватар для Egor138
32 / 13 / 3
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
27.06.2013, 15:03  [ТС]
anmartex,
А почему вы поменяли классы местами?? Это играет какое-то значение?
0
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
27.06.2013, 15:11
@Egor138, просто в классе Obj вы описываете реализацию метода fun в котором уже обращаетесь к полям объекта parent класса Win. Если бы они бы ли в предложенном вами порядке, то простое объявление класса Win не спасло ситуацию. Но если вы всё же хотите оставить очерёдность, то придётся реализацию метода fun вынести:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Win;
 
class Obj
{
    public:
        Win* parent;
        void fun();
};
 
class Win
{
    public:
        int x, y;
        vector <Obj> vec;
};
 
void Obj::fun()
{
    int a = parent->x + parent->y;
    // ...
}
1
 Аватар для Egor138
32 / 13 / 3
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
27.06.2013, 15:17  [ТС]
Большое спасибо, теперь полностью разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2013, 15:17
Помогаю со студенческими работами здесь

Область видимости
Здравствуйте. Вот кусок кода int *s; int *m() { int k = 12345; s = &amp;k; return &amp;k; }

Область видимости
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной...

Область видимости переменной
Пожалуйста проясните новичку почему следующий код выводит сообщение messagebeer вместо message ? ]:-&gt;. Я только осваиваю язык поэтому...

Область видимости переменных
Как использовать одну переменную в нескольких файлах, если эта переменная задана только в одном. Файлы между собой связаны Добавлено...

Область видимости переменной
Как сделать так,чтобы переменная и ее значение,которое считается в одной функции,было видно во всех других?Просто переменная обнуляется


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru