Название: private static QHash в классе - иницализация и использование Отправлено: Fregloin от Июль 03, 2013, 12:30 Привет. Нужно использовать статический хеш для класса. Как его инициализировать и использовать?
Сейчас использую статический хеш в функции, с поздней загрузкой, но это получается локальный статичный экзепляр для каждого объекта (таких объектов много) Код: void SomeClass::someMethod(somedata) Код: class SomeClass но при таком подходе не получается инициализировать его в методе someMethod, компилятор ругается что хеш не найден... Название: Re: private static QHash в классе - иницализация и использование Отправлено: kambala от Июль 03, 2013, 12:57 допиши где-нибудь вне методов QHash<QString,int> SomeClass::fhash; (например перед конструктором)
Сейчас использую статический хеш в функции, с поздней загрузкой, но это получается локальный статичный экзепляр для каждого объекта (таких объектов много) с чего вдруг? объект будет всего один для всех экземпляров, ведь статическая переменная определяется на уровне файла, а не объекта.Название: Re: private static QHash в классе - иницализация и использование Отправлено: Fregloin от Июль 04, 2013, 10:17 как дописать не совсем понял...
по поводу статических переменных - сейчас я использую статические хеши в функциях, а на сколько я понял, статическая переменная в функции создается один раз и хранится отдельно от текущего стека, т.е. результат сохраняется между вызовами функции, а вот является ли она общей для всех классов это вопрос... Название: Re: private static QHash в классе - иницализация и использование Отправлено: Old от Июль 04, 2013, 10:54 Не нужно путать классы и объекты.
Является общей для всех объектов - да. Название: Re: private static QHash в классе - иницализация и использование Отправлено: kambala от Июль 04, 2013, 12:04 как дописать не совсем понял... например такКод
Название: Re: private static QHash в классе - иницализация и использование Отправлено: Akon от Июль 04, 2013, 21:28 Код: // static function in cpp file Если же в getHash() нужны параметры, которые еще не известны до входа в main(), то от статического поля в классе придется отказаться, а использовать метод, возвращающий единственный экземпляр хэша и инициализирующий его при первом обращении. Вариант, когда имеется статическая переменная, которая инициализируется не сразу, считаю плохим. |