2016-03-02 3 views
2

Я хочу объяснить свой вопрос по экземпляру. Я использую стороннюю библиотеку, имеющую собственное пространство имен. Я хочу импортировать часть этой библиотеки, имеющую собственное пространство имен внутри упомянутого ниже пространства имен.Как расширить назначенное пространство имен

namespace library { 
    namespace part { 
    } 
} 

В текущем проекте также существует иерархия. Я хочу импортировать и расширить библиотеку :: part внутри моего проекта с другим именем. Я пытаюсь сделать так, как показано ниже:

#include <library/part> 

namespace project { 
    namespace my_part = library::part; 
} 

namespace project { 
    namespace my_part { 
    void my_extension_1(); 
    void my_extension_2(); 
    } 
} 

Сценарий может быть выполнен с использованием текущих инструментов языка? Если нет, как сделать обходной путь? Еще нет, почему?

Edit: Сообщения об ошибке НКИ 5.3.0 отвалов:

error: conflicting declaration of namespace ‘project::my_part’

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

ответ

2

Я считаю, что вы хотите сделать пространство имен свой собственный, который содержит все, что library::part содержит, и больше, кроме того, без положить ничего больше в library::part. Как это?

namespace library { 
    namespace part { 
     const int library_part_i = 123; 
    } 
} 

namespace project { 
    namespace part { 
     using namespace library::part; 
     void my_extension_1(){}; 
     void my_extension_2(){}; 
    } 
} 

int main() 
{ 
    // const int i = library_part_i; <- Does not compile 
    // const int i = project::library_part_i; <- Does not compile 
    const int i = project::part::library_part_i; 
    // library::part::my_extension_1(); <- Does not compile 
    project::part::my_extension_2(); 
    return 0; 
} 
Смежные вопросы