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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Teplotexnik
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
#1

Работа с классами (в главном классе создать указатель на экземпляр другого класса) - C++

07.09.2013, 16:05. Просмотров 1509. Ответов 20
Метки нет (Все метки)

Недавно начал изучение С++, в частности ООП. В связи с чем у меня есть вопрос как в главном классе можно создать указатель на экземпляр другого класса, причем такой, чтоб во всех экземплярах главного класса был один и тот же указатель. То есть существует много экземпляров главного класса, все указатели которого указывают на единственный экземпляр другого класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 16:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с классами (в главном классе создать указатель на экземпляр другого класса) (C++):

Создать в классе поле типа другого класса - C++
Как создать в классе поле типа string? Я пишу просто string Name, но компилятор ругается.

Обращение к методам класса через указатель на экземпляр класса - C++
Добрый день. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

указатель на экземпляр шаблонного класса - C++
имеется такой класс template <class Coord> class Elem { private: const Coord x, y; Elem *Prev; bool check; public: ...

Указатель на текущий экземпляр класса this - C++
Всем здрасьте. Например у меня есть класс: class A { // ... void B(); void C(); // ... }

Указатель на экземпляр шаблонного класса - C++
Есть шаблон класса template <typename TBase> class TArray { ... };, есть некие объекты TArray <A> a; TArray <A> b; TArray <A> c;,...

Указатель на объект, или экземпляр класса? - C++
Здравствуйте Уважаемые программисты! Недавно я начал изучать программирование с использованием С++. Ранее не программировал. В качестве...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fit
14 / 14 / 0
Регистрация: 20.04.2010
Сообщений: 102
07.09.2013, 21:10 #16
Цитата Сообщение от gray_fox
Инициализируй в конструкторах
тогда каждый объект SharedPtr будет ссылаться на отдельное хранилище Storage. а надо, чтобы на одно.
не понимаю чем автору не нравится статический указатель. он для таких целей и существует))
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
07.09.2013, 21:23 #17
Цитата Сообщение от fit Посмотреть сообщение
тогда каждый объект SharedPtr будет ссылаться на отдельное хранилище Storage. а надо, чтобы на одно.
не понимаю чем автору не нравится статический указатель. он для таких целей и существует))
я не знаю)
Цитата Сообщение от Teplotexnik Посмотреть сообщение
спасибо так работает, но хотелось бы попробовать не через статический указатель, а через создание в каждом объекте класса указателя на один объект класса, подскажите как сделать без статических определений.
Добавлено через 4 минуты
Т.е. видимо как то так:
C++
1
2
3
std::auto_ptr<Storage> const storage(new Storage);
 
SharedPtr::SharedPtr() : ptr(storage.get()) {}
Teplotexnik
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
07.09.2013, 23:50  [ТС] #18
Цитата Сообщение от fit Посмотреть сообщение
не понимаю чем автору не нравится статический указатель. он для таких целей и существует))
потому что все статически определенные объекты и поля как глобальные переменные создаются самыми первыми и могут создаться до того, как будут определены
Цитата Сообщение от gray_fox Посмотреть сообщение
Т.е. видимо как то так:
Код C++
C++
1
2
std::auto_ptr<Storage> const storage(new Storage);
SharedPtr::SharedPtr() : ptr(storage.get()) {}
это какой то встроенный класс auto_ptr?
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
08.09.2013, 00:07 #19
Цитата Сообщение от Teplotexnik Посмотреть сообщение
это какой то встроенный класс auto_ptr?
Да http://en.cppreference.com/w/cpp/memory/auto_ptr
fit
14 / 14 / 0
Регистрация: 20.04.2010
Сообщений: 102
08.09.2013, 02:02 #20
Цитата Сообщение от Teplotexnik
потому что все статически определенные объекты и поля как глобальные переменные создаются самыми первыми и могут создаться до того, как будут определены
а что в этом страшного? определяете-то значение поля вы все равно сами. и сделать это надо будет всего один раз. ну можно еще объявить как private на всякий пожарный. ощущение такое, велосипед изобретаете)
Teplotexnik
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
08.09.2013, 02:05  [ТС] #21
этот класс как бы повторяет (частично) то, что я хотел сделать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 02:05
Привет! Вот еще темы с ответами:

Создание экземпляр класса из другого класса - C++
Добрый день, форумчане. Помогите разобраться с такой плюсовенькой проблемой: есть 2 класса (назовем их A &amp; B). Нужно в классе B запустить...

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Создать экземпляр класса без явного указания членов класса - C++
Если у меня есть два конструктора, один из которых по умолчанию, а второй явный. Я почему-то не могу создать экземпляр класса без явного...

Указатель на функцию-член одного класса в другом классе - C++ - C++
Добрый вечер! Может кто-то может помочь с проблемой. class Cook { public: void _cook_dish(Dish cook_dish_id) { ... ...


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

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

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