【问题标题】:C++ how to "un-use" a library reference?C ++如何“取消使用”库引用?
【发布时间】:2021-12-29 22:55:53
【问题描述】:

在一个程序中,我大量使用了 std 库。我想命名一个函数less(),但是这已经在std 中使用了。有没有我可以在using namespace std; 之后添加的行,它将清除less() 以便稍后声明。

目前我收到“错误:对 'less' 的引用不明确”。

我知道我可以列出我正在使用的所有内容(例如using std::cout;),我只是想问一下是否有“否定”版本。

谢谢你,丹尼尔

【问题讨论】:

  • 这是一个完美的例子,说明为什么你永远不应该使用'using namespace std',参见stackoverflow.com/questions/1452721/…
  • 没有。一旦完成,using 指令(如using namespace std)的效果将无法撤消。解决方案是避免使用 using 指令,或者完全限定名称(例如,如果函数不在任何命名空间中,则调用函数 ::less,如果在 yournamespace 中,则调用函数 yournamespace::less)。

标签: c++ std using


【解决方案1】:

您可以显式使用::less 或在内部范围内使用using ::less

#include <iostream>

using namespace std;
void less();

void func1() {
    ::less();
}

void func2() {
    using ::less;
    less();
}

总的来说,请考虑从您的代码中删除using namespace std;,并在需要的任何地方用std:: 装饰您的代码。

【讨论】:

    【解决方案2】:

    这很容易回答:不,那是不可能的。你必须首先避免污染你的命名空间。

    【讨论】:

      【解决方案3】:

      在使用命名空间 std 后我可以添加一行吗?这将清除 less() 以便稍后声明。

      不,但你可以做的是一开始就不要写using namespace std;

      或者,您可以使用范围解析运算符使用限定名称引用您的less

      【讨论】:

        猜你喜欢
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-15
        • 2016-07-06
        • 1970-01-01
        • 2014-05-08
        • 2013-07-06
        相关资源
        最近更新 更多