Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > using namespase std;


Автор: Nastya 11.3.2003, 20:54
Вобщем-то про пространство имен я окромя этой строчки мало, что знаю.
Объясните как с ними работать, как их создавть,
какие еще уже созданы, кроме std.
А если есть лучше дайте хорошую инфу по этому поводу.

Автор: -=Baa=- 11.3.2003, 21:31
Давай сделаем своё пространство имен smile.gif
создадим заголовчный файл и приинклудим его к проекту...
файл след. содержания:
Код

namespace xxx {
int Test ()
{
 return 10;
}
}

namespace yyy {
int Test ()
{
 return 20;
}
}


мы объявили 2 пространство имен.
терь в главном проекте можно их использовать smile.gif
пишем: using namespace xxx;
Терь мы можем использовать функцию Test, которая будет возвращать 10, если же мы напишем using namespace yyy; то функция будет взята из втрого пространства и соотв. вернет 20.

Автор: -=Baa=- 11.3.2003, 21:35
А про какие еще быывают, дык ты кады-нить директиву #import пользовала? Видимо нет. После импортирования обычно приходится расширять пространство имен из это библиотеки smile.gif
Код

#define USE_PROGID 1
#define USE_LIBID 0

#if USE_PROGID
#import "progid:Excel.Sheet.8" auto_search auto_rename rename_search_namespace("Office9")
#elif USE_LIBID
#import "libid:{00020813-0000-0000-C000-000000000046}" auto_search auto_rename version(1.3) lcid(0) no_search_namespace
#else
#pragma message ("Make sure excel9.olb is on the path")
#import "excel9.olb" auto_search auto_rename
#endif

using namespace Excel;

Автор: Vyacheslav 11.3.2003, 21:56
Пространство имен используется в основном для разрешения возможных конфликтов имен.
Как правило такие конфликты могут возникнуть при использовании чужих библиотек, когда к качестве имени класса, функции или переменной могут быть использованы широко используемые термины данной предметной области. Для того, что бы избежать подобных вещей, водят уточнение имени пространства.
Код

namespace  MySpace
{

class  Class1 {};

}

namespace  YourSpace
{

class  Class1 {};


}

Class1 cls1; // ошибка  - конфликт имен  
MySpace::Class1 MyCls; //так правильно
YourSpace::Class1 YourCls; // так тоже







Автор: Nastya 11.3.2003, 23:35
Спасибо,
с дерективой #import не совсем поняла, но, судя по всему, это отдельный разговор.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)