你好,我想知道爲什麼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之前需要咖啡的另一個證明! –