Название: Проблема с доступом к члену класса Отправлено: M9yT от Ноябрь 13, 2010, 20:13 Всем привет.
Есть некоторый класс Код: class address{ Код: typedef QVector<address*> MyCollection; Код: #include <QtGui/QApplication> Название: Re: Проблема с доступом к члену класса Отправлено: Nimbus от Ноябрь 13, 2010, 20:48 Синглтон, наверное
Название: Re: Проблема с доступом к члену класса Отправлено: M9yT от Ноябрь 13, 2010, 20:51 Синглтон, наверное А поподробнее?Название: Re: Проблема с доступом к члену класса Отправлено: lit-uriy от Ноябрь 13, 2010, 21:54 >>Как избежать этого, не используя static.
ни как Название: Re: Проблема с доступом к члену класса Отправлено: BlackTass от Ноябрь 14, 2010, 13:57 Ну да, два варианта собственно. Либо делаем его статиком, либо делаем класс Programm синглтоном (http://en.wikipedia.org/wiki/Singleton_pattern)
Название: Re: Проблема с доступом к члену класса Отправлено: lit-uriy от Ноябрь 14, 2010, 14:09 >>либо делаем класс Programm синглтоном
который внутри содержит переменную статическую и соответствующий статический метод. статика - единственный вариант в Си++ Название: Re: Проблема с доступом к члену класса Отправлено: andrew.k от Ноябрь 14, 2010, 18:24 можно еще использовать глобальный экземпляр Program, но со статиком мне кажется симпатичнее.
Либо сделать у Program конструктор, который будет брать ссылку на коллекцию из параметра class Program { private: Collection * fCollection; public: Program(); Program( Program &pr ) { fCollection = pr.fCollection; } }; Program globalcollection; { // wanna use method Program p(globalcollection); ... p.addToCollection(...); } Другой вопрос, если ты создаешь экземпляр класса только для того, чтобы добавить данные в глобальную коллекцию, то проще изменить концепцию. Например. В конструкторе проверяешь создана ли коллекция, если нет - создаешь, если да, ничего не делаешь. Указатель на коллекцию разумеется статический. Дальше нужен статичный метод, который будет возвращать ссылку на коллекцию, с которой можно будет что-то делать или статичный метод который будет добавлять данные в коллекцию по твоим законам :) Мне это видится так. |