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

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

Войти
Регистрация
Восстановить пароль
 
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

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

27.06.2013, 14:36. Просмотров 313. Ответов 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 и наоборот.
Я не могу никак додуматься как вообще можно сделать вхаимную видимость этих классов.
Ну или подскажите как по другому все сделать, чтобы опять не наткнуться на эту проблему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 14:36     Область видимости
Посмотрите здесь:

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

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

Область видимости переменных - C++
Не компилируется программа, пишет, что count не является однозначным... #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; ...

область видимости класса - C++
А почему у меня ошибку выдает? Не могу понять using namespace std; class Base { int a; public: Base(int aa) { a = aa; } ...

Structure (Область видимости) - C++
struct.cpp:38:13: ошибка: нет декларации «TechnicalType» в этой области видимости помогите поправить :c 38 строка // //Failname:...

Область видимости переменных - C++
Здравствуйте. Столкнулся со следующей проблемой: есть файл main.cpp: int a, b; #include &quot;class.h&quot; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
27.06.2013, 14:44     Область видимости #2
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;
            // ...
        }
 
};
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
27.06.2013, 15:03  [ТС]     Область видимости #3
anmartex,
А почему вы поменяли классы местами?? Это играет какое-то значение?
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
27.06.2013, 15:11     Область видимости #4
@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;
    // ...
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 15:17     Область видимости
Еще ссылки по теме:

Область видимости в классах - C++
Почему следующий пример выдает такой результат: Bar::testPrivate Bar::testPublic Я полагал он должен вывести: ...

Область видимости struct - C++
Пытаюсь создать проект, в котором была бы &quot;глобальная&quot; проинициализированная структура, что бы ею можно было воспользоваться в функции...

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

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


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

Или воспользуйтесь поиском по форуму:
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
27.06.2013, 15:17  [ТС]     Область видимости #5
Большое спасибо, теперь полностью разобрался
Yandex
Объявления
27.06.2013, 15:17     Область видимости
Ответ Создать тему
Опции темы

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