簡體   English   中英

在類組合中,使包含的類可以訪問容器類變量

[英]In class composition make possible for contained class to access container class variables

首先考慮類聲明:

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

class Contained
{
public:
    Contained();
    int contmember();
private:
    int somedata;
};

現在的想法是, Contained類是為在Container類中聲明而設計的,因此可以多次聲明它,並且可以隨時創建和刪除它,在這種情況下,可以從Container類中的funcMember()中刪除它。

我的問題:有沒有一種方法,使每一個實例Contained內部Container可以訪問dataMember的任何內部Container實例?

注意:幾個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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM