|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.09.2013, 10:37 | #1 |
Форумчанин
Регистрация: 11.01.2013
Сообщений: 149
|
Как лучше записать?
Как лучше сделать объявление класса в единственном экземпляре? Постараюсь на примерах объяснить свою мысль.
У меня есть класс от которого наследуются 2 дочерних класса. В родительском классе хочу завести статический класс для работы по сети, так как он будет использоваться в двух дочерних. Но загвоздка в том что не совсем понимаю как инициализировать этот класс, так как туда нужно передать аргументы сети (IP и порт). И кстати эти оба класса будут использовать одни и те же параметры сети, по этому я и хочу сделать статическим класс для работы с сетью. Знаю несколько способов инициализации: 1) Через конструктор: Код:
Код:
Эти 3 способа кажутся немного корявыми. По этому есть ли другие способы?
Может это и чушь, но это моя чушь и я ее никому не отдам.
|
25.09.2013, 11:14 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Ну я б сделал класс работы с сетью.
А в родительском классе статический метод для доступа к этой сети: Код:
|
25.09.2013, 11:54 | #3 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
А почему бы просто не сделать константное статическое поле в базовом классе?
|
25.09.2013, 12:31 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
25.09.2013, 13:52 | #5 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Мне в свою очередь непонятно нафига все время дергать статическую функцию если можно обойтись полем.
|
25.09.2013, 14:08 | #6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Код:
Стандарт гарантирует, что инициализация локального-статического объекта произойдет в момент первого вызова функции. Что это значит? Это значит, что не важно откуда (из любой точки программы, из любой единицы трансляции) вы дергаете статический метод, и это приводит к немедленной инициализации локального-статического объекта. Если бы статический объект не был бы локальным, а был глобальным: Код:
Код:
Таким образом, вариант с локальным-статиком можно дергать откуда угодно, и когда угодно. Вариант с просто статиком - только после того, как все единицы трансляции уже определены (только после запуска main() ) При чем тут константные статики, о которых вы сообщали выше для меня попрежнему загадка. Последний раз редактировалось _Bers; 25.09.2013 в 14:10. |
|
25.09.2013, 15:30 | #7 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Ты верно написал и я в курсе всего этого, но покажи мне, где возникла бы проблема с порядком инициализаций, если тут у нас статический объект только один - сеть. Который можно наверное сделать даже константным (хз, от задачи зависит).
|
25.09.2013, 15:36 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Который при инициализации дернет сингелтон (сеть). Получишь плавающие ошибки, которые зависят от фазы луны и офигеть как не очевидны. Локальный-статический позволяет делать все тоже самое, что и статический, только при этом дает большую безопасность. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
понимаю как сделать, а как записать непойму(( | lisica198808 | Помощь студентам | 9 | 24.11.2012 20:57 |
как сравнить 4 числа,наименьшее записать в R15.как вычислить степень? | dezder | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 18.12.2011 13:02 |
как лучше скомпилировать? | ALKOrobot | Общие вопросы Delphi | 3 | 10.11.2010 06:46 |
Посоветуйте, как лучше? | Artem4ik | Win Api | 2 | 09.05.2010 23:11 |
Как лучше организовать базу данных типо как в ICQ | Руслантус | БД в Delphi | 3 | 09.08.2008 23:57 |