你好,我想知道为什么C++标准允许我们在嵌套类访问外部类的私有字段,而禁止从外部类访问内部类的私有字段。我明白,这个例子: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,但现在第二个例子也是禁止的。 原因是什么,第一个例子被允许而另一个被拒绝?
对不起,我倒转了友谊,不得不修复。这是在发布到SO之前需要咖啡的另一个证明! –