在类组合中,使包含的类可以访问容器类变量

  • 本文关键字:访问 类变量 包含 组合 c++
  • 更新时间 :
  • 英文 :


首先考虑类声明:

class Container
{
public:
    Container();
    void funcMember();
private:
    int dataMember;
};
class Contained
{
public:
    Contained();
    int contmember();
private:
    int somedata;
};

现在的想法是,Contained类是为在Container类中声明而创建的,因此可以多次声明它,并在需要时创建和删除,在这种情况下,从Container类中的funcMember()

我的问题:有没有办法让Container内部的每个Contained实例都可以访问Container实例中的dataMember

注意:多个Contained对象可以在somedata变量中保存不同的值。

您可以使用

friend和嵌套类来执行此操作:

Container.h

class Container
{
    class Contained; // <<< Forward declare
    friend class Contained; // <<< Allow access from Contained
    class Contained
    {
    public:
        Contained(Container& cont_) : cont(cont_) {}
        int contmember();
    private:
         int somedata;
         Container& cont;
    };
public:
    Container();
    void funcMember();
private:
    int dataMember;
};

在另一个 TU 中提供看到完全声明的 Container 类的实现:

Container.cpp

#include "Container.h"
int Container::Contained::contmember() {
    return cont.dataMember + somedata;
}

最新更新