相关疑难解决方法(0)

如何在不重复此代码的情况下将一些代码放入多个名称空间?

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

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

namespace bar
{
    void print()
    {
        //do work...
    }
}
Run Code Online (Sandbox Code Playgroud)

foo::print()bar::print()功能是完全平等的.我的项目使用了这些函数的大量调用.

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

namespace foo, bar  //wrong code!
{
    void print()
    {
        //do work...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果没有办法按我的意愿重构代码,请告诉我,你喜欢以下决定吗?如果您的项目包含此类代码,您会感到高兴吗?:)

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

namespace bar
{
    void print()
    {
        foo::print();
    }
}
Run Code Online (Sandbox Code Playgroud)

加:

谢谢你们,我对你的答案非常满意.我想让你澄清一下:using ::foo::print和之间有区别using foo::print吗?

c++ namespaces code-duplication

17
推荐指数
2
解决办法
529
查看次数

标签 统计

c++ ×1

code-duplication ×1

namespaces ×1