Форум программистов, компьютерный форум CyberForum.ru

Использование пространства имен - C++

Восстановить пароль Регистрация
 
blrcatalyst
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 21
10.04.2013, 08:50     Использование пространства имен #1
Заголовочный файл с осн функциями двунаправленного списка.Нужно построить на его основе стек и очередь с обобщенным интерфейсом т.е названия функций одинаковое.Для этого нужно использовать естественно namespace.вот и вопрос как их тут расставить? допусти namespace stack и queue.просто внутри структуры нельзя а захватывая структуру у меня не получалось=( Как сделать стек и дек я знаю это рассказывать не надо)
C
1
2
3
4
5
6
7
8
9
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
44
45
46
47
48
49
50
51
#pragma once 
#define LISTNULL (Element*)-1 
 
 struct Element                              // элемент списка 
 { 
  Element* Prev;                             // указатель на предыдущий элемент 
  Element* Next;                             // указатель на следующий элемент 
  void*    Data;                             //  данные  
  Element(Element* prev, void* data,  Element* next) // конструктор
  {
   Prev = prev;
   Data = data;
   Next = next;
  }
  Element* GetNext(){return Next;};          // получить следующий
  Element* GetPrev(){return Prev;};          // получить предыдущий
  
  }; 
 static Element* NIL = LISTNULL;              // обозначение пустоты 
 enum Permit                                 // общие разрешения на операции со списком
 {
   ALL = 0,               // all permit
   NOINSERT =1,           // lock INSERT
   NODELETE =2,           // lock DELETE
   NOUPDATE =3            // =  NOINSERT NOUPDATE             
  };
 struct Object                              // блок управления списком 
 {
  Element* Head;                            // указатель на начало списка
  Object(){Head = NULL;};
  Element* GetFirst(){return Head;};        // получить первый элемент списка 
  Element* GetLast();                       // получить последний элемент списка
  Element* Search (void* data);             // найти  первый элемент по данным 
  int Count();//сделано                         // подсчет элементов
  Element* FindMax(Element* data);
  bool Insert(void* data);                  // добавить элемент в начало
  bool InsertEnd(void* data);//сделано          // добавить в конец !!!!!!!!!!!!!!
  bool Delete(Element* e);                  // удалить по адресу элемента 
  bool Delete(void* data);                  // удалить первый по данным
  static Permit Perm;                       // разрешение на операции -- общее для всех экземпляров Object (static !!!)
  bool isLockInsert(){return (Perm == NOINSERT || Perm == NOUPDATE);};     // блокировано добавление ? 
  bool isLockDelete(){return (Perm == NODELETE || Perm == NOUPDATE);}      // блокировано удаление ? 
  bool isListEmpty(){return (Head==NULL);};
  void DeleteList();//                      // очистить список !!!!!!!!!!!!!
 
 };
 Object Create();                           // создать список
    bool AppendList(Object& to, const Object& from);  //добавить !!!!!!!!!!!!!!
    bool CopyList(Object& to, const Object& from);   // копировать !!!!!!!!!!!!!!!!
 
#undef LISTNULL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dstat
36 / 38 / 1
Регистрация: 01.06.2011
Сообщений: 238
10.04.2013, 09:06     Использование пространства имен #2
сделать namespace на все, в этом namespace будут уникальные объявления
blrcatalyst
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 21
10.04.2013, 10:41  [ТС]     Использование пространства имен #3
на все не могу т.к список должен создаться один а функция create привязана к object и получается что я не могу перегрузит эту функцию иии пичаль(

Добавлено через 1 минуту
или мне вообще ВСЕ в namespace и консруктор итд?
dstat
36 / 38 / 1
Регистрация: 01.06.2011
Сообщений: 238
10.04.2013, 11:02     Использование пространства имен #4
да, вообще все. а если где то нужно использовать описанный класс внутри namespace , то писать
имя_nampespace::класс
имя_nampespace::функция
blrcatalyst
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 21
10.04.2013, 14:58  [ТС]     Использование пространства имен #5
Для всех выходных данных обновления не требуется.
1>6laba.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct stack::Object __cdecl stack::Create(void)" (?Create@stack@@YA?AUObject@1@XZ) в функции _wmain
1>C:\Users\NetBook\Documents\Visual Studio 2010\Projects\6laba\Debug\6laba.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>

Добавлено через 15 минут
без namespace все ок.помогите что не так( в имя всунул все кроме дефайнов
dstat
36 / 38 / 1
Регистрация: 01.06.2011
Сообщений: 238
10.04.2013, 17:06     Использование пространства имен #6
C++
1
2
3
4
5
6
7
8
9
10
11
namespace XXX{
  class CCC{
    public:
      void fff();
  };
}
 
int main(){
   XXX::CCC myobj;
   myobj.fff();
}
Yandex
Объявления
10.04.2013, 17:06     Использование пространства имен
Ответ Создать тему
Опции темы

Текущее время: 09:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru