![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
А вот если стоит задача сделать общее поле для объектов разных классов? Нашёл только возможность сделать поле сквозным для объектов одного класса.
Можно конечно заюзать глобальную переменную, или запихивать поле в другой объект в качестве аргумента, но неохота какую-то корявость городить. Вообщем как бы красиво поступить в этом случае? |
![]() |
![]() |
![]() |
#2 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
![]()
Объявите один класс дружественный другому классу, что бы иметь возможность работать с определенными полями одного класса из другого класса. Либо. как вы уже сказали - глобальные переменные.
|
![]() |
![]() |
![]() |
#3 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
создай класс с общими полями и используй множественное наследование, если я правильно понял твою проблему
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]() Цитата:
Это как? Поле с модификатором static? |
|
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Используй их и не парься особо.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 | |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
pu4koff
Цитата:
Помоему проще всё же так реализовать: Вопрос такой, может ли впринципе адрес структуры bul измениться между инициализациями им объектов? Код:
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Адрес не изменится. Но я бы использовал паттерн Singleton. Ну или что-то вроде shared_ptr, который вроде должны в новенький стандарт официально записать
![]() А вообще зависит от задачи. Может лучше и параметром передавать, а то тут разделяемый ресурс получается, что не есть безопасно при многопоточности. В общем, в реальном приложении я бы именно так писать не стал, а для обучения сойдет ![]() |
![]() |
![]() |
![]() |
#8 | |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]() Цитата:
В книжке написано, насчёт конструкторов, что желательно оставлять тело пустым, а инициализацию проводить в скобочках. Вопрос - почему? Ну хотя-бы в общих чертах? |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Да там ничего сложного. Вот статейку почитай. В принципе что-то вроде варианта с bul, но не надо следить за временем жизни объекта, засорять классы A и B, да и в целом цивильнее выглядит. Свои минусы и свои плюсы конечно у обоих вариантов есть.
Цитата:
Код:
Если брать простые типы (int, char), то там, возможно, никакой разницы и не будет, но это легко проверить опытным путём. В общем, основное отличие - при инициализации в теле конструктора, возможны лишние "телодвижения" (выделили память, записали нолик, а потом уже записываем нужное значение, а зачем нолик писать, если можно сразу нужное подставить). Ну опять же не у всех объектов есть публичные конструкторы по умолчанию и по-другому просто не получится их создать. Так что желательно != обязательно и пишите как нравится. Некоторые авторы книжек вообще советуют выносить инициализацию в отдельную функцию (чтобы не дублировать код в конструкторе по умолчанию, конструкторе копии и операторе присваивания). Только не пишите вот такого в конструкторах: Код:
Поэтому в конструкторах лучше придерживаться правила: использовать члены класса только на запись, а уж в теле инициализировать или еще где - вопрос личных престрастий. |
|
![]() |
![]() |
![]() |
#10 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
pu4koff
Жжёшь!! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поля класса | xell29 | Общие вопросы Delphi | 8 | 18.06.2009 17:10 |
поля в DBgrid | Mihailhome | БД в Delphi | 4 | 19.05.2009 11:24 |
Слияние и поля!!!! | Окоча Юра | Microsoft Office Word | 2 | 01.03.2009 22:05 |
вычисляемые поля | Nikola | БД в Delphi | 4 | 19.11.2008 13:26 |
Вычесляемые поля | puma | Помощь студентам | 6 | 12.05.2008 20:26 |