在C ++中,为什么我可以访问没有命名空间限定符的命名空间中定义的函数

问题描述

我有一个名字ns。在ns中,我定义了一个类和一个函数。我进一步将函数定义为该类的朋友,以便该函数可以访问该类的私有变量。在主程序中,我成功调用了该函数,而未使用ns ::对其进行限定。有关详细信息,请参见代码。

#include <iostream>

namespace ns {
    class MyClass;
    void print_fn(const MyClass & c);
}

namespace ns {
    class MyClass {
    private:
        int _a;
    public:
        MyClass(int a): _a(a) {}

        friend void print_fn(const MyClass & c);
    };

    void print_fn(const MyClass & c){
        std::cout << c._a << std::endl;
    }
}


int main()
{
    ns::MyClass c(10);
    print_fn(c);

    return 0;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)