Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> namespace - тонкости работы, Читаем, если  
:(
    Опции темы
ZVano
  Дата 4.3.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Сначала хотел задать вопрос, а теперь разобрался и решил поделиться.
Просьба дописывать сюда недостающую информацию.

Оказывается, namespace очень полезная штука.
Позволяет разделять код по именованым пространствам.

Простой пример:
uMyMath.h
Код

namespace my_math{
  int round1(double parDouble);
  int round_to(double parDouble, unsegned int parPrecision);
 //...
}

Используем:
Код

// Подключаем модуль
#include "uMyMath.h";

//Вариант1. Делаем видимым все из указаного namespace
using namespace my_math;
  void my_procedure(void){
     int myIntValue =  ound_to(12345.123456, 2); //Вызываем напрямую функцию round_to из namespace my_math
  }

//Вариант 2. Указываем полный путь к элементу namespace
void my_procedure(void){
   int myIntValue =  my_math::round_to(12345.123456, 2); //Вызываем функцию round_to из namespace my_math
}

//Вариант 3. Объявляем участок кода, как часть namespace (расширение namespace)
namespace my_math{
  // Все, написаное тут, станет частью "my_math"
  void my_procedure(void){
     int myIntValue =  ound_to(12345.123456, 2); //Вызываем напрямую функцию round_to из namespace my_math
  }
}





Допустимы и вложения namespace
u_my_curl.h
Код

namespace my_root{
    namespace curl_http {
        struct TParamProxyHttp{
            UnicodeString host;
            int port;
        };
    }
    namespace curl_ftp {
        struct TParamProxyFtp{
            UnicodeString host;
            int port;
        };
    }
}


Использовать так:
Код

#include "u_my_curl.h";

// Вариант 1. Пишем полный путь.
my_root::curl_ftp::TParamProxyFtp myVariable;

// Вариант 2. Пищем сокращенный путь, используя using.
using namespace my_root::curl_ftp;
TParamProxyFtp myVariable;

// Вариант 3. Обарщаемся через алиас, заданый в using.
using namespace my_root::curl_ftp=a_ftp;
a_ftp::TParamProxyFtp myVariable;



Если Вам из namespace не нужно все (нужен один-два типа), то можно включить их непосредственно в текущую область видимости так:
Код

using my_root::curl_http::TParamProxyHttp;
//...тут будет доступен тип TParamProxyHttp из namespace my_root::curl_http и ничего более из него (namespace)
TParamProxyHttp myParsProxyHttp; // В этой строчке используем тип "TParamProxyHttp".


Это сообщение отредактировал(а) ZVano - 9.3.2011, 10:11


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
k0rvin
Дата 4.3.2011, 13:26 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



молодец, открыл Америку


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
ZVano
Дата 4.3.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Цитата(k0rvin @ 4.3.2011,  13:26)
молодец, открыл Америку

Не иронизируй, другим может пригодится.

Идем сюда: http://forum.vingrad.ru/users/k0rvin
k0rvin\Профиль пользователя
Наибольшая активность в
Форум: Религиозные войны
Сообщений: 62 (31%)

Наводит на мысли...



Народ, не флудите пожалуста.
Есть что добавить - пишите, нет - проходите молча мимо.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
xvr
Дата 4.3.2011, 14:06 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



А еще в С++ есть классы и страшно сказать - шаблоны!

Ваши изыскания по namespace'ам есть в любом букваре по С++ (где namespace'ы вообще упоминаются). Более того, это именно то, зачем их в С++ делали.

Цитата(ZVano @  4.3.2011,  13:35 Найти цитируемый пост)
Есть что добавить - пишите


Про using namespace не все написали (точнее почти ничего не написали)
Код

namespace my_root{
    namespace curl_http {
        struct TParamProxyHttp{
            UnicodeString host;
            int port;
        };
    }
}

using namespace my_root::curl_http = A;

A::TParamProxyHttp proxy_params;


PM MAIL   Вверх
ZVano
Дата 4.3.2011, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Цитата(xvr @  4.3.2011,  14:06 Найти цитируемый пост)
Про using namespace не все написали (точнее почти ничего не написали)

Исправился.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
xvr
Дата 4.3.2011, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



ZVano, оформи свои изыскания в виде статьи (например как тут), и попроси модераторов прикрепить в шапке форума. В таком виде это будет вполне уместно (и полезно)

PM MAIL   Вверх
ZVano
Дата 4.3.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Цитата(xvr @  4.3.2011,  15:39 Найти цитируемый пост)
... оформи ... в виде статьи ...


Если будет время, с радостью.
Сейчас времени хватает только чтобы краем глаза на форум заглядывать.

Цитата(xvr @  4.3.2011,  14:06 Найти цитируемый пост)
изыскания по namespace'ам есть в любом букваре по С++

У Страуструппа с 209 по 239 стр притом муторным языком.
Лучше "на пальцах" за 5 минут.

Цитата(xvr @  4.3.2011,  14:06 Найти цитируемый пост)
А еще в С++ есть классы и страшно сказать - шаблоны!

smile Активно использую и то и другое. Правда, с STL на Вы и шепотом покаместь.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
k0rvin
Дата 9.3.2011, 08:19 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(ZVano @ 4.3.2011,  15:29)
Цитата(xvr @  4.3.2011,  14:06 Найти цитируемый пост)
Про using namespace не все написали (точнее почти ничего не написали)

Исправился.

еще можно подключать не все пространство, а отдельные символы:
Код

using my_root::curl_http::TParamProxyHttp;



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
ZVano
Дата 9.3.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Цитата(k0rvin @  9.3.2011,  08:19 Найти цитируемый пост)
...еще можно подключать не все пространство, а отдельные символы...

Спасибо, не знал. Добавил в шапку.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.