|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.07.2012, 13:09 | #1 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Расширение области видимости локального объекта на все файлы.
Здравствуйте!
Сомневаюсь, что название темы достаточно конкретно, постараюсь раскрыть вопрос. Итак, пишу программу (тетрис) с использованием SDL. Программа разбита на файлы. В файле, в котором находится определение метода инициализации всех необходимых данных и объектов для программы, есть также и объявление и инициализация статического объекта, который является таблицей цветов. И проблема как раз в том, что он является локальным и действует в пределах этой функции: Код:
Код:
Код:
Код:
Код:
Спасибо за внимание! Евгений. |
09.07.2012, 14:15 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
синглетон, не?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
09.07.2012, 16:27 | #3 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Чего-чего-чего?
|
09.07.2012, 17:19 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
09.07.2012, 17:41 | #5 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Простите, я прочитал это, но совершенно не понимаю, что это значит и как это используется. Если вам не сложно, не могли бы вы коротко объяснить человеческим языком, а не "как на википедии", как это работает?
|
10.07.2012, 10:12 | #6 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Синглтон - это шаблон проектирования программного обеспечения. Синглтон (одиночка) - класс, который должен гарантировать свою уникальность в пределах программы, только один экземпляр данного класса на всю программу. Обычно у него закрытый конструктор и доступ к экземпляру осуществляется через статический метод.
Код:
Код:
Знающий не говорит, говорящий не знает (С) Лао Цзы
Последний раз редактировалось Krok27; 10.07.2012 в 10:19. |
10.07.2012, 11:18 | #7 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Krok27, спасибо, вроде стало чуть-чуть яснее, что это за штуковина, хотя четкого представления нет. Оно выглядит как-то неестественно для меня, мы только что в весеннем семестре проходили С++ и я решил для закрепления написать тетрис + чтобы немножко ознакомиться с SDL.
Кажется, до меня немного дошло, как это применить, спасибо! Еще такой вопрос оффтопный. Если я хочу, чтобы мой объект был виден во всех методах класса, я могу объявить его как динамический член-объект в объявлении класса (в заголовочном файле). При этом без проблем его инициализация происходит в одном из методов класса, членом которого он является и виден во всех членах-методах этого класса. Однако, getter`ы возвращают указатели на переменные вместо значений переменных, т.к. идентификатор объекта является указателем на объект. В случае статического объекта никаких проблем нет. Как "подправить" динамические объекты, чтобы они возвращали данные в том же формате, что и статические объекты того же класса? И в каком виде в случае динамического объекта его методом возвращается указатель? Как указатель на указатель? Как быть? |
10.07.2012, 14:52 | #8 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Многабукв. Геттер может возвращать и ссылку на динамический объект. Только зачем?
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
10.07.2012, 15:18 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
если вы возвращаете указатели то значит это вы так написали. идентификатор обьекта, this чтоль? но это не мешает вам вернуть значение переменной а не указатель на нее. просто помните что в функции this это я сам, обьект к которому вызван метод. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
13.07.2012, 11:18 | #10 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Пепел Феникса, в общем, я перепутал и написал про геттер, а на самом деле была проблема с оператором индексирования. Я использовал его с динамическим объектом так:
obj [ index ]; А надо было так: ( * obj ) [ index ]; Т.ч. теперь мои объекты благополучно будут членами класса и никаких проблем с областью видимости не будет. Я не там копал, короче. Спасибо всем за помощь, тему можно закрывать. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Написать программу для определения принадлежности точки с координатами (х,у) заштрихованной области. Попадание на границу области | sanek@zaputan | Помощь студентам | 5 | 09.03.2012 12:00 |
Проверить принадлежит ли точка закрашенной области, границе или находится вне области (код на Pascal) | homk | Помощь студентам | 3 | 07.09.2011 23:16 |
Вопрос по области видимости | LMnet | Общие вопросы C/C++ | 2 | 04.04.2011 08:02 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |
Как сделать чтобы новые строки всегда были в области видимости? | neugadal | Microsoft Office Excel | 9 | 06.09.2008 12:23 |