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

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

Войти
Регистрация
Восстановить пароль
 
dimkaok
 Аватар для dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
#1

Как использовать один и тот же объект в разных классах? - C++

19.04.2013, 13:19. Просмотров 535. Ответов 3
Метки нет (Все метки)

Подскажите, пожалуйста, как получить доступ к функции через объект. Второй день бьюсь,
хотя решение должно быть простое

В классе A создал объект o_field класса C, т.к. здесь мне этот объект
понадобился в первый раз:

C++
1
2
3
4
5
6
7
8
// A.h
#include "B.h"
class A {
    
  public:
 
      C    o_field;
};
Здесь определена функция, к которой далее мне нужно получить доступ через
объект o_field:

C++
1
2
3
4
5
6
7
8
9
// C.h
class C {
    
  public:
    
      int getCurrentArrayElement() {
               // какой-то код
          }
};
Теперь объект o_field (не новый, а тот-же, что в классе A) нужен здесь:

C++
1
2
3
4
5
6
7
8
9
10
// B.h
#include "A.h"  // т.к. там объявлен o_field
class B {
 
  public:     
 
      void sleep(){             
         if(o_field.getCurrentArrayElement()) {} // Error: идентификатор "o_field" не определен
          }
};
Как мне получить доступ к функции getCurrentArrayElement()?

Добавлено через 3 минуты
И почему пишет, что идентификатор "o_field" не определен, я-же подключил файл A.h, в котором он определен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 13:19     Как использовать один и тот же объект в разных классах?
Посмотрите здесь:

Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? C++
C++ Как сделать один шаблон для разных типов
Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? C++
C++ Определить, сколько занятий ведет один и тот де преподаватель
C++ Определить, сколько занятий ведет один и тот же преподаватель
Двоичный поиск в массиве выдает один и тот же ответ C++
C++ Один и тот же объект в одном выражении модифицируется несколько раз - неопределенное поведение
C++ Возвращает один и тот же результат. Найти произведение ряда
Генератор паролей создает один и тот же пароль C++
Несколько new на один и тот же указатель C++
Два потока читают один и тот же буфер C++
Как правильно использовать operator= при наследовании в полиморфных и неполиморфных классах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2855 / 1788 / 181
Регистрация: 13.01.2012
Сообщений: 6,727
19.04.2013, 13:35     Как использовать один и тот же объект в разных классах? #2
вы подключили A.h. в нем определен класс A. класс B не является ни потомком класса A ни содержит в себе объектов класса A. почему вы думаете что можете обратиться к полю класса A которого нет в классе B?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 540
19.04.2013, 13:38     Как использовать один и тот же объект в разных классах? #3
Например, так:

C++
1
2
3
4
5
6
7
8
9
class B: public A
{
  public:     
 
      void sleep()
      {             
            if(o_field.getCurrentArrayElement()) {}
      }
};
dimkaok
 Аватар для dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
19.04.2013, 13:51  [ТС]     Как использовать один и тот же объект в разных классах? #4
Все, до меня дошло)))

Цитата Сообщение от vxg Посмотреть сообщение
почему вы думаете что можете обратиться к полю класса A которого нет в классе B?
Я думал, что подключив A в классе B, я получу доступ к Public-членам класса A

Добавлено через 1 минуту
Цитата Сообщение от Afflicted Посмотреть сообщение
class B: public A
Спасибо, помогло
Yandex
Объявления
19.04.2013, 13:51     Как использовать один и тот же объект в разных классах?
Ответ Создать тему
Опции темы

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