我继承了一些命名错误的代码,当我收到第三方图书馆让我的生活更加复杂时,我很幸运。这就是我最终的目标。
class Something; // third party library
namespace Something {
class Something;
class Templated<class TemplateClass>;
}
现在我需要使用第三方库中的“Something”类作为名称空间Something下的新类的TemplateClass参数。我认为这应该有用
class Something; // third party library
namespace Something {
class Something;
class Templated<class TemplateClass>;
class Impl : public Templated< ::Something > {}
}
但是编译器不喜欢它。我编译它的唯一方法是
class Something; // third party library
class Something2 : public Something {} // dirty hack
namespace Something {
class Something;
class Templated<class TemplateClass>;
class Impl : public Templated< Something2 > {}
}
但我真的不喜欢它。 必须是更好的方法。
答案 0 :(得分:3)
您可以使用其他命名空间:
class Something; // third party library
namespace third_party{
using ::Something;
}
namespace Something {
class Something;
class Templated<class TemplateClass>;
class Impl : public Templated< ::third_party::Something > {}
}
一般来说,我认为命名你的类和命名空间完全一样是个坏主意。