访问其他类的私有struct成员

时间:2018-05-13 08:24:02

标签: c++ class friend

您好我在理解C ++中的friend关键字时遇到了一些麻烦

假设我有一个如下所示的课程:

class A
{
private:
    friend class B;
    struct Astruct
    {
        int funVar = 1;
    };
    Astruct myStruct
public:
    changeAStruct(); // changes the value of funVar to 2
};

class B
{
    //how do i here get access to myStruct with the value 2?
};

希望上面的伪代码能告诉你我的问题。我想要myStruct的同一个实例,使用this指针可以让我在B类的A类中实现。我怎样才能实现这个目标?

我不想要的是在B类中输入:

A::Astruct myStruct

因为这会在B类中创建一个新结构,并将funVar设置为1.我想在A类中使用相同的结构,但现在在B类中...

编辑:我想从main我可以将myStruct发送到B类作为参考并从那里访问它。这是最佳选择吗?

1 个答案:

答案 0 :(得分:0)

我不确定你想要什么,但你可以这样做:

class A
{
private:
    friend class B;
    struct Astruct
    {
        int funVar = 1;
    };
    Astruct myStruct;
};

class B
{
public:
    int getFunVar(A &a)
    {
        return a.myStruct.funVar;
    }
};