C ++访问朋友类中的私有成员

时间:2015-11-22 22:13:31

标签: c++ private-members friend-class

我有2个类(firstClass和secondClass),其中firstClass是secondClass的朋友,并且有一个私有嵌套的unordered_map,我想在secondClass函数中访问它。 所以基本上代码是这样的:

<input type="date" />

我知道它应该是微不足道的,但我不知道如何解决它。 任何的想法? (我更改了代码和问题以使其更清晰)

1 个答案:

答案 0 :(得分:1)

允许友元类访问任何私有成员,因此您只需调用方法并修改属性,就像它们已经公开一样。

Here文档,它说:

  

友元声明出现在一个类体中,并授予一个函数或另一个类访问友元声明出现的类的私有和受保护成员。

也就是说,通过查看您的示例,我宁愿更改放置朋友关键字的位置,因为我认为 myfunc2 不应该是公开

它遵循一个示例,我应用了上述建议,并展示了如何处理来自朋友类的私人成员:

#include<unordered_map>

using namespace std;

class firstClass;

class secondClass{
    friend class firstClass;

private:
    void myfunc2(unordered_map<unsigned,double>& map){
        map[1]=0.5;
    }
};

class firstClass{
public:
void myfunc1(secondClass* sc){
    // here firstClass is accessing a private member
    // of secondClass, for it's allowed to do that
    // being a friend
    sc->myfunc2(STable);
}
private:
    unordered_map<unsigned,double> STable;
};

int main(){
    firstClass  fco;
    secondClass sco;
    fco.myfunc1(&sco);
    return 0;
}