【发布时间】:2016-06-30 17:42:23
【问题描述】:
您好,我想知道为什么 C++ 标准允许我们在嵌套类中访问外部类的私有字段,而禁止从外部类访问内部类的私有字段。我明白,这个例子:
class OuterClass{
public:
class InnerClass{
public:
void printOuterClass(OuterClass& outer) {cout << outer.m_dataToDisplay;};
};
private:
int m_dataToDisplay;
};
很好,因为内部类有时可能很复杂。但我认为以下情况也可以:
class Algorithm{
public:
class AlgorithmResults{
public:
void readAlgorithmResult();
private:
void writeAlgorithmResult();
};
void calculate(AlgorithmResults& results, Arguments...){
//calculate stuff
results.writeAlgorithmResult(results);
}
};
对我来说,这种结构非常有意义,尽管在 C++ 中是不允许的。我还注意到,有一段时间两者都在 Java 中被允许,但现在第二个例子也被禁止了。 是什么原因,第一个示例被允许而另一个示例被拒绝?
【问题讨论】: