Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как разместить в header файле namespace
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
shelms shelms вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.10.2005
По умолчанию Как разместить в header файле namespace - 07.08.2006, 16:15

Хочу поместить namespace в заголовочный файл, с тем, чтобы затем использовать его сразу в нескольких юнитах.
Но получаю ошибку о двойственном объявлении данного пространства имен в файлах, использующих этот header.

Как быть? Подскажите, пожалуйста, кто знает.

/* M: Тема перенесена. S. */
Ответить с цитированием
  (#2 (permalink)) Старый
c++ c++ вне форума
Member
 
Сообщений: 962
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.12.2003
По умолчанию 07.08.2006, 16:53

Покажи код.
Ответить с цитированием
  (#3 (permalink)) Старый
Kislov Kislov вне форума
Member
 
Сообщений: 576
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.05.2004
По умолчанию 07.08.2006, 18:11

может добавить
Код:
#pragma once
?
Ответить с цитированием
  (#4 (permalink)) Старый
shelms shelms вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.10.2005
По умолчанию 09.08.2006, 11:33

Спасибо большое за оперативный ответ!
Но мой вопрос мой скорее относится к C++Builder. Именно там и возникла проблема.
Ответить с цитированием
  (#5 (permalink)) Старый
Shadow_Replicant Shadow_Replicant вне форума
Member
 
Сообщений: 322
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.08.2005
По умолчанию 09.08.2006, 11:54

Цитата:
Но мой вопрос мой скорее относится к C++Builder. Именно там и возникла проблема.
Для C++Builder есть специальный раздел на форуме.

Цитата:
может добавить
Код:
#pragma once
?
Альтернатива :
Код:
#ifndef Unit1H
#define Unit1H

// .. код 

#endif
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
shelms shelms вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.10.2005
По умолчанию 11.08.2006, 13:24

Цитата:
Для C++Builder есть специальный раздел на форуме.
Альтернатива :
Код:
#ifndef Unit1H
#define Unit1H

// .. код 

#endif

Нет, этот вариант не проходит.
Пишет, что встретил несколько объявлений одного и того же пространства имен
Ответить с цитированием
  (#7 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 11.08.2006, 13:36

Приведи код, а то так еще долго будем пустозвонить
Мы же программеры, пара строчек кода может сказать больше, чем страницы обычного текста.


импортирован с progz.ru
Ответить с цитированием
  (#8 (permalink)) Старый
shelms shelms вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.10.2005
По умолчанию 15.08.2006, 19:03

Ок, вот код:

Заголовочный файл:

Код:
#ifndef Unit1H
#define Unit1H
namespace ns_1 {
    int j;
}
#endif;
Первый файл:

Код:
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
...
Второй файл:

Код:
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
Ошибка:
[Linker Warning] Public symbol 'ns_1::j' defined in both module UNIT1.OBJ and UNIT2.OBJ
Ответить с цитированием
  (#9 (permalink)) Старый
Shunix Shunix вне форума
Member
 
Сообщений: 1,355
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.06.2002
По умолчанию 15.08.2006, 20:17

Так, у тебя проблема не с namspace - в данном случае проблема с двойным определением одной и той же переменной (j) в двух единицах компиляции.
Путь решения (только будь уверен, что тебе нужна глобальная переменная и именно с таким именем): убрать определение переменной, добавить ее объявление (посредством extern). Определение перенести в файл реализации.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определения внутри namespace, в cpp-файле Palich Вопросы начинающих программистов 0 18.08.2011 15:07
Что обозначает using namespace std IgorR С/С++ 13 08.02.2011 19:39
ToolBar как разместить иконку на кнопке toshkaexe C++ Builder 4 05.03.2007 06:11
Проблемы с namespace и конструктором по умолчанию wils0n С/С++ 3 06.04.2006 16:25
Картинки в RxRichEdit как разместить Dunpeal Delphi 0 07.01.2006 01:31
header? 5lim PHP 12 19.11.2005 22:38
Классы MFC определены в своём namespace или в глобальном Exhu Visual C++ 1 10.03.2005 09:03
Как разместить иконки в библиотеке Melnikov Sergey Delphi 6 04.01.2005 17:04
Вывод в поток объекта класса, который в namespace alexandroid C++ Builder 0 20.07.2004 00:11
Как правильно использовать namespace Vladimir the Red Sunny Visual C++ 18 03.04.2004 22:46
Использование директивы using namespace std Mak Visual C++ 5 08.11.2003 21:29



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов