如何将一些代码放入多个命名空间而不重复此代码?

2024-04-10

假设我在两个不同的命名空间中定义了该方法:

namespace foo
{
    void print()
    {
        //do work...
    }
}

namespace bar
{
    void print()
    {
        //do work...
    }
}

The foo::print()bar::print()函数是绝对地平等的。我的项目使用了这些函数的大量调用。

有没有办法删除其中一个print()定义不改变这些函数的调用?我的意思是类似下面的东西(当然,C++语言不允许这种构造,这只是一个例子):

namespace foo, bar  //wrong code!
{
    void print()
    {
        //do work...
    }
}

如果无法按照我想要的方式重构代码,请告诉我,您喜欢以下决定吗?如果你会高兴吗your项目中有这样的代码吗? :)

namespace foo
{
    void print()
    {
        //do work...
    }
}

namespace bar
{
    void print()
    {
        foo::print();
    }
}

ADD:

谢谢你们,我对你们的回答非常满意。我想让你澄清一下:两者之间有区别吗?using ::foo::print and using foo::print?


您可以通过以下方式实现此目的using宣言。

namespace foo
{
    void print()
    {
        //do work...
    }
}

namespace bar
{
    using foo::print;
}

EDIT

关于之间的区别::foo::print and foo::print: 在限定名称前面添加 :: 意味着您显式引用全局命名空间中的名称。这可用于选择全局项目,即使范围内更接近的另一个同名项目也是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将一些代码放入多个命名空间而不重复此代码? 的相关文章

随机推荐