ネストされたクラスの友情の概念を理解しようとしていますが、私はコンセプトを適切に理解できません。私はそれを理解するためのサンプルプログラムを書かれているが、プログラムは、私は、エラーの下に取得していますネストされたクラスの友情C++
#include<iostream>
using namespace std;
class outerClass
{
private:
int a;
public:
class innerClass;
bool print(innerClass);
};
class innerClass
{
friend class outerClass;
private:
int b;
public:
innerClass() =default;
};
bool outerClass::print(outerClass::innerClass obj)
{
cout<<"Value of b in inner class is:"<<obj.b;
}
int main()
{
outerClass in;
outerClass::innerClass obj;
obj.b=5;
in.print(obj);
}
が動作していない:
try.cpp: In member function ‘bool outerClass::print(outerClass::innerClass)’:
try.cpp:26:6: error: ‘obj’ has incomplete type
try.cpp:11:15: error: forward declaration of ‘class outerClass::innerClass’
try.cpp: In function ‘int main()’:
try.cpp:34:28: error: aggregate ‘outerClass::innerClass obj’ has incomplete type and cannot be defined
私は、インターネット上の記事を読んで、私はポイントがそれらにコメントしてください次学びましたそれらが正しいかどうかは、
- です。innerClassは、デフォルトでouterClassのすべてのメンバーにアクセスできます。
- outerClassがinnnerClassのプライベートメンバーにアクセスするためには、outerClassをinnerClassのフレンドクラスにする必要があります。
コードの間違いを指摘し、私が理解している点が正しい場合は助けてください。 outerClass
内
ここだ[内部クラスの定義に関するヒント](http://stackoverflow.com/questions/8693590/how-to-make内部クラスの定義を外クラス定義の外に置くこと) – grek40