【发布时间】:2016-12-15 18:01:55
【问题描述】:
是否有可能使成员变量/函数具有与private 相同的访问能力以及来自它所属的类的可访问性?
在代码中:
class A{
Has-A specifier: //imaginary syntax
int x;
};
class B{
void do_somthing(){
a.x=5; //OK
}
A a;
};
int main(){
A.x=5 // Denied- x is not accessible
}
换句话说,我希望class B 自动成为friend,而无需将任何代码行添加到任何与它相关的具有Has-A 关系的类。有可能吗?
注意:我知道friendship 将允许它访问其所有私有成员,而不仅仅是x。如果它可以在变量/函数级别上friendship,那就太好了。如果没有,全局friendship 也不错。
【问题讨论】:
-
不,这是不可能的。向c++ standards commitee发送更清晰的提案。
-
让
A::x受保护,并从A继承B? -
@πάνταῥεῖ 我确定您有理由将其写为评论而不是答案?如果问题是标准委员会提案的副本,那一定是一个很好的问题!
-
@JackDeeth 好吧,我不确定你是否已经可以使用一些模板元编程技巧来实现类似的目标,但实际上我懒得研究这个。
-
一种方法是编写自定义预处理器,如stackoverflow.com/questions/3545875/custom-gcc-preprocessor 中所述。
标签: c++