пространства имён

Тема в разделе "LANGS.C", создана пользователем cupuyc, 30 май 2010.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    здравствуйте. я хочу, чтобы некоторый namespace был использован только в пределах некоторого класса. как-то так:
    Код (Text):
    1. namespace somens
    2. {
    3.  static const int abc = 0;
    4. };
    5.  
    6. class Cx
    7. {
    8. private:
    9.   using namespace somens;
    10.  
    11. public:
    12.   Cx()
    13.   {
    14.     int x = abc;
    15.   }
    16. };
    на компилятор такое не хочет собирать. как можно поступить?
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Код (Text):
    1. namespace somens
    2. {
    3.     static const int abc = 0;
    4. };
    5.  
    6. class Cx
    7. {
    8. private:
    9.  
    10. public:
    11.     Cx()
    12.     {
    13.         using namespace somens;
    14.         int x = abc;
    15.     }
    16. };
     
  3. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    TermoSINteZ, в этом случае наймспейс будет заюзан только в конструкторе. в других методах придётся опять писать using namespace. я хочу, чтобы сразу на весь класс.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Код (Text):
    1. namespace somens
    2. {
    3.  
    4. static const int abc = 0;
    5.  
    6. class Cx
    7. {
    8. public:
    9.   Cx()
    10.   {
    11.     int x = abc;
    12.   }
    13. };
    14.  
    15. }
    16.  
    17. typedef somens::Cx Cx;
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Перенести реализацию в файл реализации и в его начале написать - using namespace somens; ^)
     
  6. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Booster, сейчас именно так и сделано. просто интересно - может как-то можно привязать namespace к классу. видимо, нет.
     
  7. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    а вообще любой using namespace, кроме using namespace boost - немного ересь... :)
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    using namespace boost тоже ересь. Правильные парни юзают namespace aliasing.
     
  9. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    struct somens
    {
    static const int abc = 0;
    };

    class Cx : somens
    {
    public:
    Cx()
    {
    int x = abc;
    }
    };

    :)