![](/img/trans.png)
[英]How should I access a function of a container class in a contained class object
[英]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.