LINUX.ORG.RU

[C++] множественный доступ к классу

 


0

0

Привет всем!

Столкнулся с такой проблемой.
Есть библиотека в состав которой входит много различных классов.
Есть неякий класс Info с неякой информацией ( различная информация о рисунке к примеру ), доступ к которому ( его данным ) должны получать несколько других классов.
То есть, создаеться обект класса Info infObj, записывается необходимая инфа, а потом нужно сделать так, чтобы эту инфу могли прочитать еще несколько других классов.
Это значит что этим классам нужно передать именно infObj екземпляр объекта а не создавать каждый раз новый объект.

Вот собственно и проблема.
Как сделать _нормально_ чтобы доступ к объекту могли получать несколько классов одновременно, при этом учитавая что это не программа а библиотека.

Пробывал extern, не канает. Так как при объявлении указателя на определенный класс, нужно включать соответственный заголовочный файл этого класса, а эсли это указатель на этот класс к примеру, то выходить что он последует за #include и не увидит extern обявления....
Короче пробывал, не канает.

static тоже не канает. Так как этог библиотека, и если пару приложений одновременно будут ее использовать, то выйдет что используют один и тот же объект класса Info.

Есть ли культурный способ огранизовать передачу данных в библиотеке между собой ( классами, объектами )?

anonymous

Я мало что понял, но попробую предложить решение.

library.h:

class Info {
...
};

class InfoUser {
    public void useInfo(const Info& info) = 0;
};

void registerInfoUser(const InfoUser&);

те, кто хотят использовать Info, реализуют интерфейс useInfo и регистрируют себя с помощью registerInfoUser.
Библиотека у себя сохраняет список зарегистрированных user-ов и вызывает useInfo при необходимости.

Legioner ★★★★★
()
Ответ на: комментарий от gaa

> Читать про паттерн Singleton до полного просветления.
Кажеться оно. Премного благодарен.
Спасибо БОЛЬШОЕ!

/me пошел читать по полного просветления :)

anonymous
()

> Так как этог библиотека, и если пару приложений одновременно будут ее использовать, то выйдет что используют один и тот же объект класса Info.

отсыпь

grob ★★★★★
()
Ответ на: комментарий от Legioner

>А если я никогда не использую синглтон (помимо библиотечных), меня можно считать просветлённым?

Нет, только быдлокодером

anonymous
()

Все разобрался... Не зная даже про эти паттерны, оказывается я сам использовал их до этого )
Просто мне казалось это как-то не правильно, поэтому решил експерементировать и застопорился...
Теперь прочел, и увидил точь в точь то что я делал до этого описано в singleton ( аж чуство гордости берет :) )

Спасибо всем кто помогал.

To anonymous:
Паттерн напоминает идиомы, поэтому их использование или нет это панятие абстрактное а не быдлокодинг.

anonymous
()
Ответ на: комментарий от gaa

> Читать про паттерн Singleton до полного просветления.

Хм, у меня вопрос. А разве применения синглтон-ов допустимо в библиотеке?!?
Там ж ведь указатели то статические.

В программе - да, а в библиотеке - ИМХО нет.

anonymous
()
Ответ на: комментарий от anonymous

> Там ж ведь указатели то статические.

Без проблем! Почитай, что такое "статические поля".

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.