私たちのコミュニティや外部で、ネストされたクラスに関するいくつかの投稿を読みましたが、かなり混乱しています。
私が理解している限り、C++ では、ネストされたクラスは個別の/独立したクラスと何ら変わりはありません。
conecpt をよりよく理解しようとしているときに、簡単なコードを書いたところ、外部クラスから友情を与えられなくても、内部クラスが外部クラスにアクセスできることがわかりました。
例えば:
class Outer {
private : // default access modifier
int x;
static int sx;
public:
class Inner {
public:
void changeOuterDataMemberValues(int value) {
sx = value; // changes the private static data member of Outer.
Outer out;
out.x = value; // changes the private data member via object (not via class!)
}
void printMyOuterDataMember() {
cout << sx; // prints the private data member of Outer.
}
};
};
class Lonesome {
void tryingToChangeDataMemberValue(int value) {
Outer::sx = value; // cannot change the private static data member of Outer.
}
};
int Outer::sx;
Outer クラスにネストされている Inner クラスはその (Outer クラス) データ メンバーにアクセスできますが、独立したクラスとしての Lonesome は Outer クラスのデータ メンバーにアクセスできません。
これが重複または愚かな質問である場合は申し訳ありませんが、ネストされたクラスと独立したクラス(内部/外部の関係を持たない2つの異なるクラス)には違いがあることを皆さんに確認したいだけです.
ありがとう、シンジケーター =]