代码之家  ›  专栏  ›  技术社区  ›  The Vivandiere

从命名空间中引入单个名称

  •  1
  • The Vivandiere  · 技术社区  · 6 年前

    对于以下代码,我只想引入 main 这个 operator== 对于 Point 来自命名空间 boo :

    #include <iostream>
    
    namespace boo
    {
        struct Point {
            int x;
            int y;
        };
        bool operator==(Point const& first, Point const& second) {
            return true;
         }  
    }
    
    int main()
    {
        using boo::operator==(Point const& first, Point const& second);
    }
    

    如果我这么做了 using boo::operator== ,这会起作用,但它会吸引所有其他 操作员== 在里面 喝倒采

    我怎么才能把这辆车拉进去?

    我问,因为对于上面的代码,我得到以下错误

    source_file.cpp:18:26: error: expected ';' after using declaration
        using boo::operator==(Point const& first, Point const& second);
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   François Andrieux    6 年前

    你不能。这个 使用声明 拉入a 名称 ,一个也没有 实体 。你也应该没有必要在那个特定的地方拉扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯扯 operator== 。在表达式中,例如 p1 == p2 哪里 p1 p2 具有类型 Point ,编译器将始终搜索 操作员== 在命名空间中,其中 指向 已声明。这叫做 argument-dependent lookup