LINUX.ORG.RU

Вопрос про пространства имен в C++


0

0

Доброе время суток, господа! Надеюсь, кто-нибудь поможет решить следующую проблемку.
Есть некоторый модуль, написанный сторонним разработчиком и меня его нельзя. В заголовочном файле этого модуля написано что-то типа:

namespace Namespace1 {
class TClass {
...
};
};
using namepsace Namespace1;

Кроме того, есть мой модуль, имеющий следюущий заголовочный файл:
namespace Namespace2 {
class TClass {
...
};
};

И третий модуль, который использует 2 предыдущих:

#include "Unit1.h"
#include "Unit2.h"

void function()
{
using namespace Namespace2;

TClass TMyClass;
}

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

using namespace Namespace2;
using Namespace2::TClass;

но может быть есть другой способо?

Заранее спасибо за дельные ответы.


Самое разумное решение - переименовать класс из Namespace2, чтобы он не дублировал класс с таким же названием в NS1. Или отказаться от using и писать каждый раз NS1::TClass и NS2::TClass, что IMHO несколько неудобно.

anonymous
()
Ответ на: комментарий от anonymous

Нда...
А про typedef что - никто не помнит?
typedef NS1::TClass T1;
typedfe NS2::TClass T2;

//....

Flogger_d
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.