+19        
        
                        - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 
                        ??=include <iostream>
 
template <typename T> class TSingleton: public T
??<
   public:
      static T& instance(void)
      ??<
         static T instance;
         return instance;
      ??>;
??>;
 
class TOscillStatisticko
??<
   protected:
        TOscillStatisticko(void):_countNewInSmallPool(0), _countDeleteInSmallPool(0) ??<??>;
        
        friend class TSingleton <TOscillStatisticko>;
 
   private:
      int _countNewInSmallPool;
      int _countDeleteInSmallPool;
 
   public:
      void addCountNewInSmallPool(void)
      ??<
         _countNewInSmallPool++;
      ??>
 
      int countNewInSmallPool(void)
      ??<
         return _countNewInSmallPool;
      ??>
??>;
 
typedef TSingleton <TOscillStatisticko> TOscillStatistic;
 
int main() 
??<
    TOscillStatistic::instance().addCountNewInSmallPool();
    std::cout<<TOscillStatistic::instance().countNewInSmallPool()<<std::endl;
    std::cout<<"ko"<<std::endl;
??>
                                 
        
            http://ideone.com/dt9L9
Ладно, раз уж я так палюсь, то придется признаться: у меня просто сломалась клавиатура, потому сегодня пришлось написать немного странно...
Так вот вопрос:, почему, если закомментировать строку  
friend class TSingleton <TOscillStatisticko>;
 http://ideone.com/4WBGh
        
        
            Запостил: 
 HaskellGovno,
            20 Августа 2012
        
        
            
            
        
        
    
 
(Это продолжение не законченного вопроса)
??> eq }
??= eq #
etc
http://alenacpp.blogspot.com/2006/02/blog-post.html
Вообщем, почему без френдения этот код не компилируется? он ведь должен, тк конструктор TOscillStatisticko protected и проблем быть не должно. Он должен быть виден в TSingleton::instance
> конструктор TOscillStatisticko protected
Внимательно читаем в мане, кому именно доступны protected члены, и больше не задаем тупых вопросов.
ЩИТО? Как этот самозванец посмел назваться потомком TOscillStatisticko.
Except when forming a pointer to member (5.3.1), the access must be through a pointer to, reference to, or object of the derived class itself (or any class derived from that class) (5.2.5).
- Открываем его
- Ищем в содержании нужный раздел
- Читаем
- ?????
- Профит
Но для начала задам вопрос попроще:
Где найти абсолютно финальный стандарт С++11 (не черновики, доступные каждому за бесплатно). Я знаю что его нужно покупать у комитета стандартизации, но может кто знает торрент или что-то подобное, чтобы это было за бесплатно? С моих школьных завтраков столько не накопить... Мне вон щас на клаву придется и без того копить.
http://ideone.com/38T7a
defecate-plusplus
Спасибо друзья. Я осознал свою ошибку. Я так больше не буду. :-(
Жаль, что так делать нельзя...
То есть к protected членам можно обратиться только через this и типа того и больше никак.
P.S. См. код BizarreSingleton ниже.
только доза делает лекарство ядом и яд лекарством
а для случаев "мне лениво передавать ссылку на этот объект в 0-5-10-30% создаваемых других объектов, пускай он будет глобальной переменной, ой, в смысле, синглтоном" - ну тут надо принимать во внимание фактор лени, конечно, но обычно всё неплохо кодится и без таких синглтонов
мне видится проблема из ОП как раз вторым случаем (какой-то сбор статистики, пф, еще запрет на переопределение operator = в потомке от этой статистики - задача первой важности, да)
http://ideone.com/qmyao
чорт, борманд уже накинул раньше
http://ideone.com/sDbbE
Я sosnuley... :(
У меня получилось 2 финальных варианта:
http://ideone.com/bPjsF
Из второго мне не удалось убрать friend, хотя мне он нравится больше. Есть идеи, как убрать френда из второго варианта?
А вообще реально спасибо, идея была реально гениальная bormand!
В первом варианте обезфренживание имело смысл в том случае, если класс создан не нами, и не хочется\нельзя его править, но синглтон нужен.
Во втором варианте класс зависит от синглтона, и т.к. мы уже впилили в его заголовок наследование, френда добавить никаких проблем не составит.
http://med-magazin.com.ua/item_N829.htm явно поверку давно не проходил.