중첩 클래스에서 우정의 개념을 이해하려고하지만 개념을 제대로 이해하지 못하고 있습니다. 나는 그것을 이해하는 샘플 프로그램을 작성했지만이 프로그램은 내가 오류 아래 얻고있다중첩 클래스의 우정
#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의 private 멤버에 액세스하려면 innerClass에 friendClass 클래스로 outerClass를 만들어야합니다.
코드의 실수를 지적하고 이해 한 점이 맞다면 도와주세요. outerClass
내
다음 [내부 클래스의 정의에 힌트] (의 http://stackoverflow.com/questions/8693590/how-to-make :
이하고있는 일은, 앞으로 선언 그래서
라고 외부 클래스 정의 외부에서 내부 클래스를 정의하지 않고 내부 클래스를 정의하지 않음) – grek40